JavaScript 实现可拖拽滚动条与内容联动效果

作者:函数茶馆

时间:2026-10-24

浏览:166

本文介绍使用原生JavaScript实现滚动条拖动与内容区域联动的完整方案。核心逻辑包括获取DOM元素、计算滚动条尺寸、监听鼠标按下移动及释放事件,并通过数学公式同步滚动条位置与内容偏移量,确保拖动不越界且交互流畅。

文章目录

JavaScript 实现可拖拽滚动条与内容联动效果

本文提供了一段使用JavaScript实现滚动条与内容联动展示效果的完整代码,供开发者参考学习。

实现思路

实现思路

获取元素与计算尺寸

第一步,获取页面中所需的DOM元素节点。

第二步,计算滚动条的宽度。计算公式为:滚动条长度 = (容器宽度 / 内容总宽度) × 容器宽度。

鼠标交互事件处理

第三步,监听鼠标按下事件,记录初始位置以便后续计算位移。

第四步,监听鼠标移动事件,具体处理逻辑如下:

4.1 计算鼠标移动的距离; 4.2 校验滚动条位置,防止拖动超出容器边界; 4.3 同步移动滚动条并更新内容区域位置。内容移动距离的计算公式为:内容走的距离 = (内容总长度 - 容器长度) / (容器长度 - 滚动条长度) × 滚动条移动的距离。

第五步,监听鼠标释放事件,将鼠标移动事件处理函数置空,停止联动效果。

完整代码示例


  <script>
    window.onload = function (){
      //1.获取需要的标签
      var box = document.getElementById("box");
      var box_top = box.children[0];
      var box_bottom = box.children[1];
      var mask = box_bottom.children[0];
      //2.获取滚动条长度
      // 滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度
      var mask_length = (box.offsetWidth /box_top.offsetWidth) * box.offsetWidth;
      mask.style.width = mask_length + "px";
      //3.监听鼠标按下的事件
      mask.onmousedown = function (event){
        var event = event || window.event;
        //3.1设置起始位置
        var beginX = event.clientX - mask.offsetLeft;
        //3.2 监听鼠标的移动
        document.onmousemove =function (event){
          var event = event || window.event;
          //3.2.1求移动的位置
          var endX = event.clientX - beginX;

          //3.2.2处理边界值
          if(endX < 0){
            endX = 0
          }else if(endX >= box.offsetWidth - mask.offsetWidth){
            endX = box.offsetWidth - mask.offsetWidth;
          }
          //3.2.3让滚动条滚动
          mask.style.left = endX + "px";

          //3.2.4 让商品随着滚动
          //公式:内容走的距离 = (内容的长度 - 盒子的长度) / (盒子长度 - 滚动条的长度) * 滚动条走的距离
          var content_len = (box_top.offsetWidth - box.offsetWidth) / (box.offsetWidth - mask.offsetWidth) * endX;
          box_top.style.left = -content_len + "px";

          return false;
        };
        document.onmouseup = function (){
          document.onmousemove = null;
        }
      }
    }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章