原生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 相关文章推荐
AngularJS上拉加载问题解决方法
May 23 Javascript
微信小程序前端源码逻辑和工作流
Sep 25 Javascript
JS实现动态修改table及合并单元格的方法示例
Feb 20 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
微信小程序动态增加按钮组件
Sep 14 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
详解JS深拷贝与浅拷贝
Aug 04 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 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python中返回矩阵的行列方法
2018/04/04 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
运动会广播稿60字
2014/01/15 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
责任书范本
2014/08/25 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
python中filter,map,reduce的作用
2022/06/10 Python
微信小程序实现轮播图指示器
2022/06/25 Javascript