spz-interact-observer
何时使用
spz-interact-observer 监听滚动或鼠标移动交互,并将 CSS 变换效果(视差、吸顶定位、悬停 3D 等)应用到目标元素上。
适用场景:
- 创建视差滚动效果(平移、缩放)
- 实现可堆叠的吸顶 / 吸底栏
- 在鼠标悬停时添加 3D 倾斜效果
- 根据滚动距离切换元素的显示/隐藏
支持布局
- 支持所有布局
使用方式
代码演示
滚动视差
吸顶定位
依赖另一个吸顶元素
鼠标悬停 3D 倾斜
滚动距离切换(显示/隐藏元素)
当 from 和 to 不是变换属性而是 元素ID.属性名 对时,组件会根据滚动距离切换这些元素的布尔属性。
属性
支持的变换属性
translateX、translateY、translateZ、scaleX、scaleY、rotateX、rotateY、rotateZ
Actions
change
根据 observe-id / rely-id 元素重新计算位置。适用于被观察元素尺寸动态变化的场景。
示例:
工作原理
- 视差模式 — 当
from和to都包含变换属性(如translateY、scaleX)时,组件会在元素滚动经过视口时对它们进行插值计算。 - 吸顶模式 — 当
to包含position:top或position:bottom时,组件管理吸顶可见性并与其他吸顶元素堆叠。 - 依赖/观察模式 — 设置
observe-id或rely-id时,目标元素的 top/bottom 偏移会根据被观察元素的高度和吸顶状态调整。 - 滚动距离模式 — 当
from/to不是变换属性时,组件根据滚动距离切换引用元素上的布尔属性。 - 鼠标移动模式 — 当
interact="mousemove"时,组件根据光标在目标元素内的位置应用 3D 旋转和平移。
注意事项
- 该组件不派发自定义事件。
- 在鼠标移动模式下,鼠标移出时变换会重置为
none。 - 在底部吸顶模式下会自动应用 iOS Safari 底部栏补偿。