javascript⽂字滚动显⽰
这种效果在今后的web发展中是不是常⽤或者是否依然被设计师们所青睐,从技术层⾯看并不是最重要的,了解它的实现原理,对⾃⾝前端技术的提⾼,会有很⼤的帮助,世间万物,万变不离其宗,掌握了它的运⾏规律,你才不会被其花花外表所迷惑,甚⾄你可以在掌握其规律的前提下,运⾏相关技术,创造出新的效果来。下⾯看看它的实现过程:
1.html
<div class="box" id="marqueebox0">
<ul>
<li >第⼀⾏</li>
<li >第⼆⾏</li>
<li >第三⾏</li>
</ul>
</div>
2.css
.box{
width:150px;
height:25px;
line-height:25px;
border:#bbb 1px solid;
overflow:hidden;
}
.box ul{margin:0; padding:0}
.box li{
height:25px;
line-height:25px;
font-size:12px;
text-align:center;
list-style-type:none;
}
3.JS
function startmarquee(lh,speed,delay,index){
/*
函数startmarquee的参数:
lh:⽂字⼀次向上滚动的距离或⾼度;
speed:滚动速度;
delay:滚动停顿的时间间隔;
index:可以使封装后的函数应⽤于页⾯当中不同的元素;
*/
var t;
var p=false;
var ElementById("marqueebox"+index);
//获取⽂档中的滚动区域对象,赋值给变量o;
o.innerHTML+=o.innerHTML; //对象中的实际内容被复制了⼀份,包含了两个ul,当然li标签也
由原来的3⾏,变为6⾏;复制的⽬的在于给⽂字不间断向上滚动提供过渡。
/
/⿏标滑过,停⽌滚动;
//⿏标离开,开始滚动;p是true还是false直接影响到下⾯start()函数的执⾏;
o.scrollTop = 0;
//⽂字内容顶端与滚动区域顶端的距离,初始值为0;
function start(){
t=setInterval(scrolling,speed); //每隔⼀段时间,setInterval便会执⾏⼀次
scrolling函数;speed越⼤,滚动时间间隔越⼤,滚动速度越慢;
if(!p){ o.scrollTop += 1;}
//滚动停⽌或开始,取决于p传来的布尔值;
}
function scrolling(){
if(o.scrollTop%lh!=0){
//如果不被整除,即⼀次上移的⾼度达不到lh,则内容会继续往上滚动;
o.scrollTop += 1;
if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
//对象o中的内容之前被复制了⼀次,所以它的滚动⾼度,其实是原来内容的两倍⾼度;
当内容向上滚动到scrollHeight/2的⾼度时,全部3⾏⽂字已经显⽰了⼀遍,⾄此整块内容
scrollTop归0;再等待下⼀轮的滚动,从⽽达到⽂字不间断向上滚动的效果;
}else{
clearInterval(t);
//否则清除t,暂停滚动
setTimeout(start,delay);
//经过delay间隔后,启动start() 再连续滚动
}
}
setTimeout(start,delay);
//第⼀次启动滚动;setTimeout会在⼀定的时间后执⾏函数start(),且只执⾏⼀次
}
//传递参数
startmarquee(25,30,3000,0);
//带停顿效果
startmarquee(25,40,0,1);
/
/不间断连续
以下为全部代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>⽂字向上滚动</title>
<style type="text/css">
.box{width:150px; height:25px;line-height:25px; border:#bbb 1px solid; overflow:hidden;}
.box ul{margin:0; padding:0}
.box li{height:25px; line-height:25px; font-size:12px; text-align:center; list-style-type:none;}
</style>
</head>
<body>
<div class="box" id="marqueebox0">
<ul>
<li >第⼀⾏</li>
<li >第⼆⾏</li>
<li >第三⾏</li>
</ul>
</div>
<div class="box" id="marqueebox1">
<ul>
<li >第⼀⾏</li>
<li >第⼆⾏</li>
<li >第三⾏</li>
</ul>
</div>
<script type="text/javascript">
function startmarquee(lh,speed,delay,index){
var t;
var p=false;
var ElementById("marqueebox"+index); o.innerHTML+=o.innerHTML;
o.scrollTop =0;
function start(){
t=setInterval(scrolling,speed);
if(!p){ o.scrollTop +=1;}
}
function scrolling(){
if(o.scrollTop%lh!=0){
o.scrollTop +=1;
if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
}else{
clearInterval(t);
setTimeout(start,delay);
}
}
setTimeout(start,delay);
}
startmarquee(25,30,3000,0);
html滚动效果代码
startmarquee(25,40,0,1);
</script>
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。