js jq文字向上无缝滚动、缓冲滚动
https://www.jb51.net/article/130087.htmhttps://www.jb51.net/article/129733.htmvue实现消息的无缝滚动效果的示例代码html:<div class="notice"><ul><li>第1条公告第1条公告第1条公告第1条公告第1条公告第1条公告</li&g...
·
https://www.jb51.net/article/130087.htm
https://www.jb51.net/article/129733.htm vue实现消息的无缝滚动效果的示例代码
html:
<div class="notice">
<ul>
<li>第1条公告第1条公告第1条公告第1条公告第1条公告第1条公告</li>
<li>第2条公告第2条公告第2条公告第2条公告第2条公告第2条公告</li>
<li>第3条公告第3条公告第3条公告第3条公告第3条公告第3条公告</li>
<li>第4条公告第4条公告第4条公告第4条公告第4条公告第4条公告</li>
</ul>
</div>
css:
固定公告栏显示区域的高度(35px),每条公告信息(li)的高度也必须是这个高度(我这里偷懒就用了行高),后面js中还要用到这个值。
div,ul,li{margin: 0;padding: 0}/*先初始化一下默认样式*/
.notice {
width: 300px;/*单行显示,超出隐藏*/
height: 35px;/*固定公告栏显示区域的高度*/
padding: 0 30px;
background-color: #b3effe;
overflow: hidden;
}
.notice ul li {
list-style: none;
line-height: 35px;
/*以下为了单行显示,超出隐藏*/
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
js:
封装函数 noticeUp.js
使用 jquery animate方法改变列表ul的marginTop值来实现滚动效果;
/*
* 参数说明
* obj : 动画的节点,本例中是ul
* top : 动画的高度,本例中是-35px;注意向上滚动是负数
* time : 动画的速度,即完成动画所用时间,本例中是500毫秒,即marginTop从0到-35px耗时500毫秒
* function : 回调函数,每次动画完成,marginTop归零,并把此时第一条信息添加到列表最后;
*
*/
function noticeUp(obj,top,time) {
$(obj).animate({
marginTop: top
}, time, function () {
$(this).css({marginTop:"0"}).find(":first").appendTo(this);
})
}
页面调用:
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="noticeUp.js"></script>
<script>
$(function () {
// 调用 公告滚动函数
setInterval("noticeUp('.notice ul','-35px',500)", 2000);
});
</script>
<!DOCTYPE html>
<html>
<head>
<title>文字向上无缝滚动</title>
<meta charset="utf-8">
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<style type="text/css">
*{
padding: 0;
margin:0;
}
ul,li{
list-style: none
}
.scroll {
height:100px;/*显示多少li*/
width:100%;
max-width:640px;
background-color:#000;
overflow:hidden;
color: #fff;
position: relative;
}
.scroll ul {
width:100%;
position:absolute;
left:0;
top:0;
}
.scroll span {
font-size:20px;
height:30px;
/*color:#D83E21;*/
}
.scroll li {
width: 300px;
height:30px;
line-height:30px;
}
</style>
</head>
<body>
<div id="scroll" class="scroll clearfix">
<ul>
<li>444444444444444444444444</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>33333333333333333333333333</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>11111111111111111111111111</li>
<li>2222222222222</li>
</ul>
</div>
<script type="text/javascript">
//滚动
var scrollIndex = 0;
var Timer = null;
function scroll_f(){
clearInterval(Timer);
var ul = $("#scroll ul");
var li = ul.children("li");
var h = li.height();
var index = 0;
ul.css("height",h*li.length*2);
ul.html(ul.html()+ul.html()); //复制一份当前ul内容
function run(){
if(scrollIndex>=li.length){
ul.css({top:0});
scrollIndex = 1;
ul.animate({top:-scrollIndex*h},200);
}
else{
scrollIndex++;
ul.animate({top:-scrollIndex*h},200);
}
}
Timer= setInterval(run,3000);
}
scroll_f();
</script>
</body>
</html>
更多推荐
已为社区贡献60条内容
所有评论(0)