列表内容自动向上滚动(原生JS)

效果展示

(鼠标移入,滚动停止;鼠标移出,滚动继续)

实现原理

  1. html结构:核心是ul > li,ul外层包裹着div。因为想要内容循环滚动无缝衔接,所以在原有ul后面还要有一个一样内容的ul。如下图:

     (红色边框为可视区域div,此处为了方便查看效果去除overflow:hidden;)

  2. 样式方面:由于要滚动,所以必须2个ul的高度 > 外层可视div高度,且div必须设置overflow:hidden;

代码实现

HTML:

 1 <div id="review_box">
 2     <ul id="comment1">
 3         <li>第一条</li>
 4         <li>第二条</li>
 5         <li>第三条</li>
 6         <li>第四条</li>
 7         <li>第五条</li>
 8         <li>第六条</li>
 9     </ul>
10     <ul id="comment2"></ul>
11 </div>

CSS:

 1 * {
 2     margin: 0;
 3     padding: 0;
 4 }
 5 div {
 6     width: 100px;
 7     height: 63px; /* 必须 */
 8     overflow: hidden;/* 必须 */
 9     margin: 50px auto;
10     border: 1px solid red;
11     text-align: center;
12 }
13 ul {
14     list-style: none;
15 }

JavaScript:

 1 window.onload = roll(50);
 2
 3 function roll(t) {
 4     var ul1 = document.getElementById("comment1");
 5     var ul2 = document.getElementById("comment2");
 6     var ulbox = document.getElementById("review_box");
 7     ul2.innerHTML = ul1.innerHTML;
 8     ulbox.scrollTop = 0; // 开始无滚动时设为0
 9     var timer = setInterval(rollStart, t); // 设置定时器,参数t用在这为间隔时间(单位毫秒),参数t越小,滚动速度越快
10     // 鼠标移入div时暂停滚动
11     ulbox.onmouseover = function () {
12         clearInterval(timer);
13     }
14     // 鼠标移出div后继续滚动
15     ulbox.onmouseout = function () {
16         timer = setInterval(rollStart, t);
17     }
18 }
19
20 // 开始滚动函数
21 function rollStart() {
22     // 上面声明的DOM对象为局部对象需要再次声明
23     var ul1 = document.getElementById("comment1");
24     var ul2 = document.getElementById("comment2");
25     var ulbox = document.getElementById("review_box");
26     // 正常滚动不断给scrollTop的值+1,当滚动高度大于列表内容高度时恢复为0
27     if (ulbox.scrollTop >= ul1.scrollHeight) {
28         ulbox.scrollTop = 0;
29     } else {
30         ulbox.scrollTop++;
31     }
32 }

*有错误的地方欢迎指正

*转载请注明出处

原文地址:https://www.cnblogs.com/tyouu/p/10904415.html

时间: 2024-11-05 11:30:28

列表内容自动向上滚动(原生JS)的相关文章

高仿京东APP首页“京东快报”自动向上滚动的广告条

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51013562 本文出自:[顾林海的博客] 前言 上次在京东APP上买东西时,发现首页中间有块叫"京东快报"的栏目,其中广告条能自动向上滚动,效果还不错,看到这个效果,第一个念头就是我能不能实现,于是就诞生了这篇文章. 我们看看实现后的效果: 实现原理 起初看到这个效果时,第一个想法就是向上移动动画+定时器,但当我准备写时发现,滚动时上下文字都是逐渐出来的(有

实现窗口中的文档自动向上滚动,方便阅读

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta ht

文本内容自动回滚 【js读书笔记】

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>文本内容自动回滚</title> 6 </head> 7 8 <body> 9 <h2>文本框中的文字自动回滚效果</h2> 10 <div id="rollContent" data-rwidth=&q

jquery插件之文字间歇自动向上滚动

该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的文字间歇向上滚动特效,当鼠标移动到文字上时,向上滚动会停止,当鼠标离开时,向上滚动继续.整体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition

单行自动向上滚动的新闻列表

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> body, div, dl, dt, dd, ul, ol, li, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote { margin: 0;

JS不间断平滑地自动向上滚动

<html> <head> <title>scroll up auto smooth</title> <style> *{ margin: 0; padding: 0; list-style: none; } #scroll_outer{ width: 300px; height: 90px; margin: 30px auto; overflow: hidden; background-color: #f4f4f4; } #scroll_inn

让2个并列的div根据内容自动保持同等高度js

有左右2个并列的div,2个div都不能限定高度.左div为导航,右div为内容.如何能让左div块自动获得和右div块相等的高度? 同时,也有网友提问到“如果右块高度比左块低,会不会导致左块的内容被溢出不显示之类的问题.应该是取左右2者的最高值吧来对齐吧”. 的确应该是哪个div Height值大,就将其值赋给Height值小的div,从而使2个div高度始终保持一致. function $(id){ return document.getElementById(id) } function

中奖人员信息向上滚动

最近公司搞一个抽奖转盘,然后下面有个中奖人列表信息,向上滚动的效果,在网上找了好了好多demo,不过他们大部分都有些小问题,因为我的数据第动态添加进来的,所以会导致重复叠加div向上滚动,这样太耗性能了,搞了两天,终于问公司其他同事解决了,下面写出来分享下: 动态添加数据我就不写了 这里是个js封装的,类似一jq,到时候直接引进代码里就行了(这个是公共代码,只需放到一个文件夹里) /** */ (function($){ $.fn.myScroll = function(options){ //

放弃jQuery,使用原生js吧!

转自:http://itakeo.com/blog/2015/07/28/nojq/ 随着IE6.7.8的逐渐淘汰,HTML5的兴起,以及侧重点放在了移动端,jQuery可能变的不在那么重要,原生一样很好用.下面介绍几个原生替换jq的方法. 获取元素 JQuery $('.xxx'); //class获取 $('#xxx'); //id获取 $('.xxx.ccc'); //同时包含xxx和ccc $('.xxx,.zzz'); //多选 $('.xxx div'); //子类 $('.xxx