js文字由左向右无间断滚动效果

JavaScript08

js文字由左向右无间断滚动效果,第1张

<script type="text/javascript">

var speed=30

demo2.innerHTML=demo1.innerHTML

function Marquee(){

if(demo2.offsetWidth-demo.scrollLeft<=0)

demo.scrollLeft-=demo1.offsetWidth

else{

demo.scrollLeft++

}

}

var MyMar=setInterval(Marquee,speed)

demo.onmouseover=function() {clearInterval(MyMar)}

demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}

</script>

demo的css一定要设定width和overflow:hidden

<div id="demo">

<table border="0" cellspacing="0" cellpadding="0">

<tr>

<td>

<div id="demo1">

<table width="1000" height="172" border="0" cellpadding="0" cellspacing="0">

<tr>

<td>

文字放这里

</td>

</tr>

</table>

</div>

</td>

<td>

<div id="demo2"></div>

</td>

</tr>

</table>

</div>

原理demo2复制demo1然后连成一行,demo1滚动完滚动demo2因为内容一样所以看不出来,demo2滚动完滚动demo1

保存成html文件,打开就能看到效果了。

<html>

<head>

<title>left to right</title>

</head>

<script type="text/javascript">

function onload() {

window

.setInterval(

function() {

var marginLeft = document

.getElementById("leftToRight").style.marginLeft

moveAfterLeft = marginLeft.substr(0, marginLeft.length - 2) * 1 + 50

if (moveAfterLeft <screen.width - 150) {

document.getElementById("leftToRight").style.marginLeft = moveAfterLeft

} else {

clearInterval()

}

}, 100)

}

</script>

<body onload="onload()">

<ul>

<li id="leftToRight" style="margin-left: 0width: 100px">left to

right</li>

</ul>

</body>

</html>

根据你的具体情况,有两种思路。

第一种,类似于滑动效果,用强父元素,overflow:hidden了。然后通过点击左右的键,获取当前父元素的宽度,修改父元素css属性的left,注意,position:absolute时left才起作用。

第二种就比较简单。就是简单的隐藏,点击左右,隐藏第一屏的信息,再次点击,隐藏第一、第二屏的信息,依次类推,当最后一屏的时候,又开始显示第一屏的信息,这样就是循环了。可以用fadeIn()等方法来加入一些效果

思路就是这样,说起来麻烦,其实很简单、