js实现滚动条自动滚动


Posted in Javascript onDecember 13, 2020

本文实例为大家分享了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>

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

Javascript 相关文章推荐
javascript 模式设计之工厂模式学习心得
Apr 27 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
js实现简单div拖拽功能实例
May 12 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
vue获取input输入值的问题解决办法
Oct 17 Javascript
JavaScript中的高级函数
Jan 04 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 #Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 #Vue.js
js实现简单的轮播图效果
Dec 13 #Javascript
jquery实现淡入淡出轮播图效果
Dec 13 #jQuery
JavaScript实现移动小精灵的案例代码
Dec 12 #Javascript
详解vue中使用transition和animation的实例代码
Dec 12 #Vue.js
javascript中call,apply,bind的区别详解
Dec 11 #Javascript
You might like
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
PHP new static 和 new self详解
2017/02/19 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
webpack多页面开发实践
2017/12/18 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Django中的Model操作表的实现
2018/07/24 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python 画函数曲线示例
2019/12/04 Python
python实现简单俄罗斯方块
2020/03/13 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
2013英文求职信模板范文
2013/11/15 职场文书
商业融资计划书
2014/04/29 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
关于倡议书的范文
2015/04/29 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android
element tree树形组件回显数据问题解决
2022/08/14 Javascript