原生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分页
Jun 07 Javascript
js setattribute批量设置css样式
Nov 26 Javascript
不同的jQuery API来处理不同的浏览器事件
Dec 09 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
Vue2.0权限树组件实现代码
Aug 29 Javascript
原生JS实现小小的音乐播放器
Oct 16 Javascript
vue 实现在函数中触发路由跳转的示例
Sep 01 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
Oct 20 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 Javascript
vue项目中使用多选框的实例代码
Jul 22 Javascript
React实现todolist功能
Dec 28 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查询分页的实现代码
2017/06/09 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
node.js中watch机制详解
2014/11/17 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
js实现楼层导航功能
2017/02/23 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python实现划词翻译
2020/04/23 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
python使用KNN算法手写体识别
2018/02/01 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
a标签下载链接的简单实现
2016/09/13 HTML / CSS
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
满月酒邀请函
2015/01/30 职场文书
学习保证书100字
2015/02/26 职场文书
三下乡活动心得体会
2016/01/23 职场文书