欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js实现滚动条自动滚动

程序员文章站 2022-06-16 13:28:26
本文实例为大家分享了js实现滚动条自动滚动的具体代码,供大家参考,具体内容如下效果类似于直播网站的评论,会一条接着一条向上 go out ;js部分很简单:通过控制scrolltop的值来实现自动滚动...

本文实例为大家分享了js实现滚动条自动滚动的具体代码,供大家参考,具体内容如下

效果类似于直播网站的评论,会一条接着一条向上 go out ;

js部分很简单:通过控制scrolltop的值来实现自动滚动效果;

很重要两点:   

1、scrolltop的值不可以加单位,谨记!

 2、网页缩放比例会影响效果实现(下面具体说);

scrolltop需要注意的三点:

1、如果这个元素没有被溢出,scrolltop为0;

2、设置的scrolltop值小于0,则scrolltop的值为0

3、如果设置scrolltop的值超出了这个容器滚动的值,则scrolltop的值为容器最大值

js部分:

(function () {
  // 获取父盒子(肯定有滚动条)
  var parent = document.getelementbyid('parent');
  // 获取子盒子(高度肯定比父盒子大)
  var child1 = document.getelementbyid('child1');
  var child2 = document.getelementbyid('child2');
  // 第一个子盒子内容复制一遍给第二个子盒子,产生循环视觉,辅助作用
  // 可以注释下这条代码,看会出现什么情况
  child2.innerhtml = child1.innerhtml;
  // 设置定时器,时间即为滚动速度
  setinterval(function () {
    if(parent.scrolltop >= child1.scrollheight) {
      parent.scrolltop = 0;
    } else {
      // 如果存在网页缩放,很有可能没有效果,但是else部分的代码会执行
      // 原因:刚才讲到的scrolltop三个注意中标黄的一条
      // 设置scrolltop的值小于0,即scrolltop被设为0
      // 可以缩放跑一下,然后不刷新的状态下恢复百分之百跑一下,再缩放,打印scrolltop的值
      // 你会发现正常尺寸执行时打印的第一个值不是加法,而是减法,即scrolltop++增加负值
      // 这样的话就对应上了scrolltop的注意点了,增加的值小于0,就被设为0
      parent.scrolltop++;
    }
  }, 20);
})()

下面是完整demo,拉走直接看效果

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>autoscroll</title>
</head>
<style>
  .parent {
    width: 300px;
    height: 200px;
    margin: 0 auto;
    background: #242424;
    overflow-y: scroll;
  }
  /*设置的子盒子高度大于父盒子,产生溢出效果*/
  .child {
    height: auto;
  }
  .child li {
    height: 50px;
    margin: 2px 0;
    background: #009678;
  }
</style>
<body>
  <div id="parent" class="parent">
    <div id="child1" class="child">
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
    </div>
    <div id="child2" class="child"></div>
  </div>
  <script type="text/javascript">
    (function () {
      var parent = document.getelementbyid('parent');
      var child1 = document.getelementbyid('child1');
      var child2 = document.getelementbyid('child2');
      child2.innerhtml = child1.innerhtml;
      setinterval(function () {
        if(parent.scrolltop >= child1.scrollheight) {
          parent.scrolltop = 0;
        } else {
          parent.scrolltop++;
        }
      }, 20);
    })()
  </script>
</body>
</html>

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