如何用JavaScript制作视口边缘顺时针滚动动画效果?

2026-05-07 18:540阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1076个文字,预计阅读时间需要5分钟。

如何用JavaScript制作视口边缘顺时针滚动动画效果?

原文:

要让一个元素在用户垂直滚动页面时,自动沿视口四周边缘做平滑、连续、无重置的顺时针循环运动(即:从左上角出发 → 向下走满视口高度 → 向右走满视口宽度 → 向上走满视口高度 → 向左走满视口宽度 → 回到起点并重复),关键在于放弃对 getBoundingClientRect() 实时坐标的条件判断(易受布局抖动、异步渲染、初始偏移干扰),转而采用以 scrollY 为统一时间轴的确定性数学建模

核心思路是将整个运动抽象为一个「周期性路径」:

  • 一圈总路程 = 2 ×(可用垂直距离 + 可用水平距离)
    其中:
    • 可用垂直距离 slackY = clientHeight − elementHeight(向下/向上可移动空间)
    • 可用水平距离 slackX = clientWidth − elementWidth(向右/向左可移动空间)
  • 利用 scrollY % totalCycleLength 得到当前处于周期内的相对进度 position;
  • 通过分段映射 + 镜像翻转(mirror 标志),将该进度无间断地映射到四条边上的 (x, y) 坐标。
阅读全文

本文共计1076个文字,预计阅读时间需要5分钟。

如何用JavaScript制作视口边缘顺时针滚动动画效果?

原文:

要让一个元素在用户垂直滚动页面时,自动沿视口四周边缘做平滑、连续、无重置的顺时针循环运动(即:从左上角出发 → 向下走满视口高度 → 向右走满视口宽度 → 向上走满视口高度 → 向左走满视口宽度 → 回到起点并重复),关键在于放弃对 getBoundingClientRect() 实时坐标的条件判断(易受布局抖动、异步渲染、初始偏移干扰),转而采用以 scrollY 为统一时间轴的确定性数学建模

核心思路是将整个运动抽象为一个「周期性路径」:

  • 一圈总路程 = 2 ×(可用垂直距离 + 可用水平距离)
    其中:
    • 可用垂直距离 slackY = clientHeight − elementHeight(向下/向上可移动空间)
    • 可用水平距离 slackX = clientWidth − elementWidth(向右/向左可移动空间)
  • 利用 scrollY % totalCycleLength 得到当前处于周期内的相对进度 position;
  • 通过分段映射 + 镜像翻转(mirror 标志),将该进度无间断地映射到四条边上的 (x, y) 坐标。
阅读全文