春節
快樂

花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 19|回复: 1

两个元素同步滚动演示

[复制链接]
  • TA的每日心情
    奋斗
    2026-3-4 12:03
  • 签到天数: 1749 天

    [LV.Master]伴坛终老

    3129

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-3-4 12:06 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    实现滚动同步使用到的属性:

    1. Element.scrollTop - 可读写属性,可以获取或设置元素内容从其顶部边缘滚动的像素数。
    2. Element.scrollHeight - 只读属性,是一个元素内容高度,包括由于溢出导致的视图中不可见内容。
    3. Element.clientHeight - 只读属性,对于没有定义 CSS 或者内联布局盒子的元素为 0;否则,它是元素内部的高度(以像素为单位),包含内边距,但不包括边框、外边距和水平滚动条(如果存在)。

    实现思路:

    1. 获取滚动元素当前滚动位置(scrollTop)和元素内容高度(scrollHeight - clientHeight)的比例;

    2. 将上述比例值应用于第二个元素,即根据此元素自己的滚动条实际高度计算出 scrollTop 属性值并驱动该值刷新。

    同时应考虑到滚动事件是高发事件,可以设计一个滚动机制以减少CPU消耗,详见代码示例。

    <style> /* 父元素 */ .pa { margin: 20px auto; width: 80vw; height: 90vh; display: flex; gap: 20px; } /* 子元素 */ .son { width: 50%; height: 100%; border: 1px solid #ccc; overflow: auto; } /* 孙元素 */ .grandson { height: 300%; background: linear-gradient(35deg, tan, beige, snow, beige, tan); } </style> <div class="pa"> <div id="son1" class="son"> <div class="grandson"></div> </div> <div id="son2" class="son"> <div class="grandson"></div> </div> </div> <script> let isScrolling = false; // 同步滚动逻辑 son1.addEventListener('scroll', () => scrolling(son1, son2)); son2.addEventListener('scroll', () => scrolling(son2, son1)); /* 滚动函数 */ function scrolling(el1, el2) { if (isScrolling) return; isSScrolling = true; const per = el1.scrollTop / (el1.scrollHeight - el1.clientHeight); el2.scrollTop = per * (el2.scrollHeight - el2.clientHeight); setTimeout(() => isScrolling = false, 10); } </script>
  • TA的每日心情
    奋斗
    2026-3-4 12:03
  • 签到天数: 1749 天

    [LV.Master]伴坛终老

    3129

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-3-4 12:09 | 显示全部楼层
    节流、防抖是滚动事件实际应用中常用到的,本示例没有做防抖功能,节流也是粗糙的,适用于小范围滚动,若是大型项目需要额外设计更为严格的节流防抖机制。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-3-4 15:25 , Processed in 0.087575 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表