原生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身份证验证超强脚本
Oct 26 Javascript
Javascript日期对象的dateAdd与dateDiff方法
Nov 18 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
DOM基础教程之使用DOM + Css
Jan 20 Javascript
原生js二级联动效果
Jun 20 Javascript
老生常谈js数据类型
Aug 03 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
javascript实现拼图游戏
Jan 29 Javascript
JS轻量级函数式编程实现XDM二
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
php解压文件代码实现php在线解压
2014/02/13 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
js onclick事件传参讲解
2013/11/06 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
js实现表格筛选功能
2017/01/18 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Django forms组件的使用教程
2018/10/08 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
python实现弹窗祝福效果
2019/04/07 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
销售实习自我鉴定
2013/12/07 职场文书
生日寿宴答谢词
2014/01/19 职场文书
《雨点》教学反思
2014/02/12 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
详解Python函数print用法
2021/06/18 Python