原生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 iframe中打开文件,并检测iframe存在否
Dec 28 Javascript
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 Javascript
canvas的神奇用法
Feb 03 Javascript
JS对象创建的几种方式整理
Feb 28 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
JS如何使用剪贴板操作Clipboard API
May 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
SMARTY学习手记
2007/01/04 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python3实现转换Image图片格式
2018/06/21 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Python中print函数简单使用总结
2019/08/05 Python
Numpy的简单用法小结
2019/08/28 Python
python中栈的原理及实现方法示例
2019/11/27 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年信用社工作总结
2014/11/25 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
聘用合同范本
2015/09/21 职场文书
干部外出学习心得体会
2016/01/18 职场文书