就是我们的“元素”,方便起见我这里内置数据,后面根据需要可以自己再写一个函数添加数据。
2.2创建样式
只有骨架是不行的,没有用到CSS美观是很丑的,如果不使用CSS,那么就是下图这个样子:

为此我们使用如下代码:
div {
width: 100px;
height: 100px; /*列表的长度*/
overflow: hidden;/* 必须 */
margin: 50px auto;
border: 1px solid red;
text-align: center;
}
ul {
margin: 0;
padding: 0; /*元素居中*/
list-style: none; /*去掉元素前面的标签*/
}
li{
height: 20px; /*元素高度,数据的高度等于元素个数乘元素高度*/
}
2.3JS代码
我们先创建一个“roll”滚动函数,用来实现控制“鼠标悬停在列表上时暂停滚动”、“鼠标离开列表时继续滚动”
我们分别使用:“onmouseover”和“onmouseout”两个事件来完成。
实现“向上滚动”和“向下滚动”在js中有些许不同,这里先以“向上滚动”为例
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);
}
}
我们再创建一个“rollStart”函数,用来启动“自动滑动”
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 += 1;
}
}
最后,在代码的最前面加一句:
window.onload = roll(20);
用来代码在页面加载完毕时自动启动,一切就完成啦!!
附:
如果想要列表向下滚动,我们只改动三处数值即可:
ulbox.scrollTop = ul1.scrollHeight; // 开始无滚动时设列表最长高度,用来表示到底了
上面将初始“scrollTop”置为最大值,表示此时数据底部到底了,即无法继续向下滑动,只能向上滑动
// 正常滚动不断给scrollTop的值减一,当滚动高度小于等于0时,需要重新为最大高度
if (ulbox.scrollTop > 0) {
ulbox.scrollTop = ul1.scrollHeight;
}
else {
ulbox.scrollTop -= 1;
}
上面控制“scrollTop”的值每次减一,如果小于等于0了,说明此时数据顶部到底了,即无法继续向上滑动,只能向下滑动
值得注意:
若向下滑动,对应的数据也应是逆置的,否则将会出现部分数据无法正常滑动:
不过若此时(列表长度等于原数据长度[不是整个数据]的高度,那么数据可以不用逆置)
三.全部代码
下面代码,复制粘贴即可使用
Document
div {
width: 100px;
height: 100px; /*列表的长度*/
overflow: hidden;/* 必须 */
margin: 50px auto;
border: 1px solid red;
text-align: center;
}
ul {
margin: 0;
padding: 0; /*元素居中*/
list-style: none; /*去掉元素前面的标签*/
}
li{
height: 30px; /*元素高度,数据的高度等于元素个数乘元素高度*/
}
window.onload = roll(20);
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 += 1;
}
}