原生JS实现列表内容自动向上滚动效果


Posted in Javascript onMay 22, 2019

效果展示

(鼠标移入,滚动停止;鼠标移出,滚动继续)

原生JS实现列表内容自动向上滚动效果

实现原理

1. html结构:核心是ul > li,ul外层包裹着div。因为想要内容循环滚动无缝衔接,所以在原有ul后面还要有一个一样内容的ul。如下图:

   (红色边框为可视区域div,此处为了方便查看效果去除overflow:hidden;)

原生JS实现列表内容自动向上滚动效果

2. 样式方面:由于要滚动,所以必须2个ul的高度 > 外层可视div高度,且div必须设置overflow:hidden;

代码实现

HTML:

<div id="review_box">
  <ul id="comment1">
   <li>第一条</li>
   <li>第二条</li>
   <li>第三条</li>
   <li>第四条</li>
   <li>第五条</li>
   <li>第六条</li>
  </ul>
  <ul id="comment2"></ul>
 </div>

CSS:

* {
  margin: 0;
  padding: 0;
 }
 div {
  width: 100px;
  height: 63px; /* 必须 */
  overflow: hidden;/* 必须 */
  margin: 50px auto;
  border: 1px solid red;
  text-align: center;
 }
 ul {
  list-style: none;
 }

JavaScript:

window.onload = roll(50);
 function roll(t) {
  var ul1 = document.getElementById("comment1");
  var ul2 = document.getElementById("comment2");
  var ulbox = document.getElementById("review_box");
  ul2.innerHTML = ul1.innerHTML;
  ulbox.scrollTop = 0; // 开始无滚动时设为0
  var timer = setInterval(rollStart, t); // 设置定时器,参数t用在这为间隔时间(单位毫秒),参数t越小,滚动速度越快
  // 鼠标移入div时暂停滚动
  ulbox.onmouseover = function () {
   clearInterval(timer);
  }
  // 鼠标移出div后继续滚动
  ulbox.onmouseout = function () {
   timer = setInterval(rollStart, t);
  }
 }
 // 开始滚动函数
 function rollStart() {
  // 上面声明的DOM对象为局部对象需要再次声明
  var ul1 = document.getElementById("comment1");
  var ul2 = document.getElementById("comment2");
  var ulbox = document.getElementById("review_box");
  // 正常滚动不断给scrollTop的值+1,当滚动高度大于列表内容高度时恢复为0
  if (ulbox.scrollTop >= ul1.scrollHeight) {
   ulbox.scrollTop = 0;
  } else {
   ulbox.scrollTop++;
  }
 }

总结

以上所述是小编给大家介绍的原生JS实现列表内容自动向上滚动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
jQuery弹出div层过2秒自动消失
Nov 29 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 Javascript
js实现一个简单的MVVM框架示例
Jan 15 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 Javascript
小程序如何使用分包加载的实现方法
May 22 #Javascript
原生js实现trigger方法示例代码
May 22 #Javascript
koa router 多文件引入的方法示例
May 22 #Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 #Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 #Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 #Javascript
vue项目中mock.js的使用及基本用法
May 22 #Javascript
You might like
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
JavaScript模拟push
2016/03/06 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
Linux下Python获取IP地址的代码
2014/11/30 Python
python梯度下降法的简单示例
2018/08/31 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
前台文员个人求职信范文
2014/01/05 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
电话营销开场白
2015/05/29 职场文书
工作表现证明
2015/06/15 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android