原生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 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
Prototype PeriodicalExecuter对象 学习
Jul 19 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
Aug 10 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
Jan 18 Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 Javascript
JavaScript封装单向链表的示例代码
Sep 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代码
2012/07/17 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
实例讲解PHP表单处理
2019/02/15 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
网上抓的一个特效
2007/05/11 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
用实例分析Python中method的参数传递过程
2015/04/02 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python字典改变value值方法总结
2019/06/21 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
python 错误处理 assert详解
2020/04/20 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
英文版网络工程师求职信
2013/10/28 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
开学季活动策划方案
2014/02/28 职场文书
政府信息公开实施方案
2014/05/09 职场文书
政府四风问题整改措施
2014/10/04 职场文书
1000字打架检讨书
2014/11/03 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL