CSS Anchor Positioning Playground
交互式体验 CSS Anchor Positioning API,学习如何使用原生 CSS 实现精确的锚点定位效果,无需 JavaScript 计算。
- Chrome 125+ · 完全支持
- Edge 125+ · 完全支持
- Safari 26.0+ · 完全支持
- Firefox 147+ · 完全支持
- Opera 111+ · 完全支持
此组件使用 CSS Anchor Positioning API。如使用不支持此功能的浏览器,部分效果可能无法正常显示。
什么是 CSS Anchor Positioning?
CSS Anchor Positioning API 是一个强大的新特性,让你能够将一个元素相对于另一个元素精确定位,无需 JavaScript:
anchor-name: 为锚点元素命名position-anchor: 指定要锚定到哪个元素anchor(): 函数用于获取锚点元素的位置信息position-try-fallbacks: 自动处理视口溢出,切换备选位置
通过这些 CSS 属性,你可以实现工具提示、下拉菜单、链接预览等复杂的定位效果。
示例演示
精美的链接预览卡片
使用 CSS Anchor Positioning API 实现的优雅链接预览效果,鼠标悬停即可查看链接详情。预览卡片会自动相对于链接定位,并在空间不足时自动切换到合适的位置。
在现代 Web 开发中,Next.js
样式方面,Tailwind CSS
对于组件库,shadcn/ui
如果你对人工智能感兴趣,Vercel AI SDK
最后,别忘了关注 GitHub
展开查看源码
锚点定位核心:
- 链接元素通过
anchor-name: --anchor-{id}注册为锚点 - 预览卡片通过
position-anchor: --anchor-{id}绑定到对应的链接 - 使用
top: anchor(bottom)和left: anchor(center)精确定位到链接下方中央 position-try-fallbacks: flip-block, flip-inline自动处理视口溢出,在上下左右切换位置
视觉效果:
- 渐变背景遮罩层提升图片的可读性
- 平滑的透明度和缩放过渡效果,提升交互体验
- 响应式图片加载和文本截断,确保卡片布局稳定
- 纯 UnoCSS 实现,无需额外 CSS 文件
优势:
- 无需 JavaScript 计算位置,性能更优
- 自动处理滚动和视口变化
- 原生浏览器支持,代码更简洁
核心特性
1. 原生 CSS 定位
无需 JavaScript 计算坐标,浏览器原生处理所有定位逻辑,性能更好,代码更简洁。
2. 自动位置调整
使用 position-try-fallbacks 自动检测视口边界,智能切换最佳显示位置,避免内容被裁剪。
3. 精确位置控制
anchor() 函数提供精细的位置控制,支持 top、bottom、left、right、center 等多种参考点。
实际应用场景
- 链接预览卡片: 鼠标悬停显示链接摘要信息
- 工具提示 (Tooltip): 显示元素的说明文字
- 下拉菜单 (Dropdown): 相对于按钮定位菜单
- 弹出式选择器 (Popover): 日期选择器、颜色选择器等
- 上下文菜单: 右键菜单定位
- 悬浮面板: 编辑器工具栏、格式化面板等
