原生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 相关文章推荐
从JavaScript 到 JQuery (1)学习小结
Feb 12 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
js拦截alert对话框另类应用
Jan 16 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
基于AngularJS前端云组件最佳实践
Oct 20 Javascript
jQuery中的siblings()是什么意思(推荐)
Dec 29 Javascript
vue实现验证码输入框组件
Dec 14 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
Node.js静态服务器的实现方法
Feb 28 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
简单了解python模块概念
2018/01/11 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
python palywright库基本使用
2021/01/21 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
物业管理毕业生个人的求职信
2013/11/30 职场文书
小学家长会邀请函
2014/01/23 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
大学生工作自荐书
2014/06/16 职场文书
承诺保证书格式
2015/02/28 职场文书
人民币使用说明书
2019/04/17 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python