读书人

js 走马灯,该怎么处理

发布时间: 2012-12-16 12:02:32 作者: rapoo

js 走马灯
想做在div里做一个走马丁的效果

<div id="txt">我爱北京天安门,我爱中国</div>

请问怎么写代码用按钮控制向左还是向右,还有一个停止按钮
[最优解释]

<!DOCTYPE html>  
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
img{border: none;}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var speed=30;
var demo = $("#demo");
var demo1 = $("#demo1");
var demo2 = $("#demo2");
demo2.html(demo1.html());
function Marquee(){
if(demo.scrollLeft()>=demo1.width())
demo.scrollLeft(0);
else{
demo.scrollLeft(demo.scrollLeft()+1);
}
}
var MyMar=setInterval(Marquee,speed)
demo.mouseover(function() {
clearInterval(MyMar);
} )
demo.mouseout(function() {
MyMar=setInterval(Marquee,speed);
} )
});
</script>
</head>
<body>
<div id="demo" style="overflow:hidden;width:500px;">
<table border=0 align=center cellpadding=0 cellspacing=0 >
<tr>
<td id="demo1" valign="top" bgcolor="#ffffff" >
<!-- 特别注意,下面的图片总宽度必须大于上面定义的demo的宽度,如上面demo的宽度为500px,则下面图片总宽度必须大于500,否则会出现些问题! -->
<table border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td><a href="#" target="_blank"><img alt="js 走马灯,该怎么处理" src="01.jpg" width="150" height="100"></a></td>
<td><a href="#" target="_blank"><img alt="js 走马灯,该怎么处理" src="02.jpg" width="150" height="100"></a></td>
<td><a href="#" target="_blank"><img alt="js 走马灯,该怎么处理" src="03.jpg" width="150" height="100"></a></td>
<td><a href="#" target="_blank"><img alt="js 走马灯,该怎么处理" src="04.jpg" width="150" height="100"></a></td>


<td><a href="#" target="_blank"><img alt="js 走马灯,该怎么处理" src="05.jpg" width="150" height="100"></a></td>
</tr>
</table>
</td>
<td id="demo2" valign="top"></td>
</tr>
</table>
</div>
</body>
</html>



上面是图片的, 你自己把这个改一下就好了
[其他解释]
使用marquee标签就可以了。
[其他解释]
javascript问题通常比较浅、比较乱,而且其实也不应该在asp.net论坛里(因为有专门的html/javascript论坛)。

要想左右循环移动,那么你需要将一个组件重复n遍并左右并排对齐摆放。假设说一个<div>宽度是w,那么n个并排摆放到一个<div>中,那么这个新的组的的宽度就是w*n。这里n等于几,取决于需要并排多少个才能让w*n大于外边剪切容器的宽度+w。例如你的文字的宽度是150个像素,剪切容器的宽度是400像素,那么就并排4个文字就好了。

然后比如说向左移动,也就是说在一个定时器控制下让left坐标不断减小(例如减小2个像素),当left等-w的时候,立刻设置left=0。因为内容的宽度是剪切容器宽度+w,所以剪切容器里总是能看到“首尾连续”的走马灯文字,而不会出现marquee那种变为“空白”的低级体验。
[其他解释]
上面说的“每一次将left减2个像素、判断left=-w”,这是向左移动时的处理方式。向右移动时,把增量修改为+2,把初始left设置为-w,然后判断当left>=0时立刻设置left=-w,就能循环走马灯了。

而“停止按钮”,不过是一个flag,在定时器(setTimer)过程中判断这个标志来决定是否要将left的值修改。
[其他解释]
http://blog.csdn.net/spritenet/article/details/8080181
[其他解释]
引用:
使用marquee标签就可以了。


这个就可以用

上下左右,去 w3cshool.com上看下对应的参数。

读书人网 >C#

热点推荐