You need to enable JavaScript to run this app. 滚动时按比例平移元素:如何实现红区前白框均匀右移50%并解决快速滚动问题
优惠活动
大模型
产品
解决方案
定价
更多

滚动时按比例平移元素:如何实现红区前白框均匀右移50%并解决快速滚动问题

滚动位移的实现需求与现存问题
  • 核心目标:页面向下滚动时,白色方块同步向右平移,直到滚动位置抵达红色区块的边界时,方块刚好累计完成向右平移自身宽度的50%,整个位移过程和滚动进度保持均匀对应
  • 示例参数:本场景下白色方块起始位置与红色区块的垂直间距为1000px
  • 现存问题:
    • 之前为了放缓移动速度,随意取了除数10做位移计算,始终无法做到滚动进度和方块位移的精准匹配,没法在抵达红色区块时刚好完成50%的右移
    • 页面滚动速度过快时,方块的实际累计位移会小于预期值

现有实现代码

JS 逻辑

var xPos = 0;

function getXPos(target, windowPos) {
  var amount = windowPos - target;
  xPos = amount / 10;
  return xPos;
}

$(window).scroll(function() {
  var windowPos = $(window).scrollTop();
  var sectionOne = $('section.one').offset().top;
  var sectionTwo = $('section.two').offset().top;
  var box = $('.box');

  if (windowPos > sectionOne && windowPos < sectionTwo) {
    box.css({
      "transform": 'translateX(' + getXPos(sectionOne, windowPos) + '%)'
    });
  }
});

CSS 样式

body {
  margin: 0;
}

.box {
  background: white;
  position: sticky;
  top: 0;
  width: 300px;
  height: 300px;
}

section.one {
  height: 1000px;
  background: blue;
}

section.two {
  height: 1000px;
  background: red;
}

HTML 结构

<section class="one">
  <div class="box"></div>
</section>
<section class="two"></section>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

内容的提问来源于stack exchange,提问作者Seong Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 14:54:03