特性
- 激活背景块跟随选中项并使用弹性缓动
- 响应式布局:桌面横向、移动端纵向
- 动画主要由 CSS 完成,JS 只负责更新激活态
实现原理
- 本示例直接复用站点头部的 `src/components/NavLinks.astro` 组件。
- 激活态通过 `window.location.pathname` 计算,并在 `astro:page-load` 时同步。
- 当前激活项提供锚点(`anchor-name`),`.nav::before` 通过 `position-anchor` 绑定到该锚点。
- 指示器位置和尺寸由 `anchor(top/left/right/bottom)` 提供,再交给 CSS transition 做移动动画。
- 如果是跨页面导航,需配合 `transition:persist` 保持导航 DOM 连续,并按语言拆分 persist key。