请教各位js高手,由于自己对js不是很了解,现在需要制作一个效果,使一段文字能够向左循环滚动
目前使用了一段代码如下;
<marquee direction=left align="bottom" height="100%" width="100%" onmouseout=this.start()
onmouseover=this.stop() scrollamount="1" scrolldelay="0">
<a href="baidu.com">123456</a>
</marquee>但是做美工的说不行,说这样滚动不好看,两次滚动之间会留有空白,需要的效果是当第一次滚动还没有完全消失的时候,第二次滚动就已经开始了,在网上也找了许多的代码,但是都不成功。
比如说下面的代码:<div id="marquees"> <!-- 这些是字幕的内容,你可以任意定义 -->
<a href="#">链接四</a>
<!-- 字幕内容结束 -->
</div>
<!-- 以下是java-script代码 -->
<script language="javascript">
<!--
marqueesWidth=120; //内容区宽度度
stopscroll=false; //这个变量控制是否停止滚动
with(marquees){
noWrap=true; //这句表内容区不自动换行
style.width=marqueesWidth; //于是我们可以将它的宽度设为0,因为它会被撑大
style.height=0; style.overflowX="hidden"; //滚动条不可见
onmouseover=new Function("stopscroll=true"); //鼠标经过,停止滚动
onmouseout=new Function("stopscroll=false"); //鼠标离开,开始滚动
}
//这时候,内容区的高度是无法读取了。下面输出一个不可见的层"templayer",稍后将内容复制到里面:
document.write('<div id="templayer"style="position:absolute;z-index:1;visibility:hidden"></div>'); function init(){ //初始化滚动内容
while(templayer.offsetWidth<marqueesWidth){
templayer.innerHTML+=marquees.innerHTML;
} //把"templayer"的内容的“两倍”复制回原内容区:
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
//设置连续超时,调用"scrollUp()"函数驱动滚动条:
setInterval("scrollUp()",20);
}
document.body.onload=init;
preTop=0; //这个变量用于判断滚动条是否已经到了尽头
function scrollUp(){ //滚动条的驱动函数
if(stopscroll==true) return; //如果变量"stopscroll"为真,则停止滚动
preTop=marquees.scrollLeft;
marquees.scrollLeft+=1;
//如果滚动条不动了,则向上滚动到和当前画面一样的位置
//当然不仅如此,同样还要向下滚动一个像素(+1):
if(preTop==marquees.scrollLeft){
marquees.scrollLeft=templayer.offsetHeight-marqueesWidth+1;
}
}
-->
</script> 但是只要网页加入这句话
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
效果就没有了,恳请各位帮忙解决,谢谢!
目前使用了一段代码如下;
<marquee direction=left align="bottom" height="100%" width="100%" onmouseout=this.start()
onmouseover=this.stop() scrollamount="1" scrolldelay="0">
<a href="baidu.com">123456</a>
</marquee>但是做美工的说不行,说这样滚动不好看,两次滚动之间会留有空白,需要的效果是当第一次滚动还没有完全消失的时候,第二次滚动就已经开始了,在网上也找了许多的代码,但是都不成功。
比如说下面的代码:<div id="marquees"> <!-- 这些是字幕的内容,你可以任意定义 -->
<a href="#">链接四</a>
<!-- 字幕内容结束 -->
</div>
<!-- 以下是java-script代码 -->
<script language="javascript">
<!--
marqueesWidth=120; //内容区宽度度
stopscroll=false; //这个变量控制是否停止滚动
with(marquees){
noWrap=true; //这句表内容区不自动换行
style.width=marqueesWidth; //于是我们可以将它的宽度设为0,因为它会被撑大
style.height=0; style.overflowX="hidden"; //滚动条不可见
onmouseover=new Function("stopscroll=true"); //鼠标经过,停止滚动
onmouseout=new Function("stopscroll=false"); //鼠标离开,开始滚动
}
//这时候,内容区的高度是无法读取了。下面输出一个不可见的层"templayer",稍后将内容复制到里面:
document.write('<div id="templayer"style="position:absolute;z-index:1;visibility:hidden"></div>'); function init(){ //初始化滚动内容
while(templayer.offsetWidth<marqueesWidth){
templayer.innerHTML+=marquees.innerHTML;
} //把"templayer"的内容的“两倍”复制回原内容区:
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
//设置连续超时,调用"scrollUp()"函数驱动滚动条:
setInterval("scrollUp()",20);
}
document.body.onload=init;
preTop=0; //这个变量用于判断滚动条是否已经到了尽头
function scrollUp(){ //滚动条的驱动函数
if(stopscroll==true) return; //如果变量"stopscroll"为真,则停止滚动
preTop=marquees.scrollLeft;
marquees.scrollLeft+=1;
//如果滚动条不动了,则向上滚动到和当前画面一样的位置
//当然不仅如此,同样还要向下滚动一个像素(+1):
if(preTop==marquees.scrollLeft){
marquees.scrollLeft=templayer.offsetHeight-marqueesWidth+1;
}
}
-->
</script> 但是只要网页加入这句话
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
效果就没有了,恳请各位帮忙解决,谢谢!
http://blog.csdn.net/lihan6415151528/archive/2009/03/19/4003830.aspx
<html>
<head>
<title>run!</title>
<style type="text/css">
#ss{width:130px;height:20px;margin:0 auto;overflow: hidden;white-space: nowrap;background:#ffffff; border:1px solid #000000}
#ss ul{margin:0px; padding:0px;width:650px;}
#ss ul li{margin:0px; padding:0px; list-style:none; float:left;display:block; width:130px;}
</style>
</head>
<body>
<div id='ss'>
<ul>
<li>111111111111111</li>
<li>222222222222222</li>
<li>333333333333333</li>
<li>444444444444444</li>
<li>111111111111111</li>
</ul>
</div>
<script>
var speed =10;
function $(id){return document.getElementById(id)};
function $$(obj,elm){return obj.getElementsByTagName(elm)}
setInterval(function(){$('ss').scrollLeft<$$($('ss'),'ul')[0].offsetWidth-$$($('ss'),'li')[0].offsetWidth?($('ss').scrollLeft++):($('ss').scrollLeft=0)},speed)
</script>试试这个!~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="marquees"> <!-- 这些是字幕的内容,你可以任意定义 -->
<a href="#">链接四</a>
<!-- 字幕内容结束 -->
</div>
<!-- 以下是java-script代码 -->
<script language="javascript">
<!--
marqueesWidth=120; //内容区宽度度
stopscroll=false; //这个变量控制是否停止滚动
with(marquees){
noWrap=true; //这句表内容区不自动换行
style.width=marqueesWidth; //于是我们可以将它的宽度设为0,因为它会被撑大
style.height='auto'; style.overflowX="hidden"; //滚动条不可见
onmouseover=new Function("stopscroll=true"); //鼠标经过,停止滚动
onmouseout=new Function("stopscroll=false"); //鼠标离开,开始滚动
}
//这时候,内容区的高度是无法读取了。下面输出一个不可见的层"templayer",稍后将内容复制到里面:
document.write('<div id="templayer"style="position:absolute;z-index:1;visibility:hidden"></div>'); function init(){ //初始化滚动内容
while(templayer.offsetWidth<marqueesWidth){
templayer.innerHTML+=marquees.innerHTML;
} //把"templayer"的内容的“两倍”复制回原内容区:
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
//设置连续超时,调用"scrollUp()"函数驱动滚动条:
setInterval("scrollUp()",20);
}
document.body.onload=init;
preTop=0; //这个变量用于判断滚动条是否已经到了尽头
function scrollUp(){ //滚动条的驱动函数
if(stopscroll==true) return; //如果变量"stopscroll"为真,则停止滚动
preTop=marquees.scrollLeft;
marquees.scrollLeft+=1;
//如果滚动条不动了,则向上滚动到和当前画面一样的位置
//当然不仅如此,同样还要向下滚动一个像素(+1):
if(preTop==marquees.scrollLeft){
marquees.scrollLeft=templayer.offsetHeight-marqueesWidth+1;
}
}
-->
</script>
</body>
</html>
我只改动了style.height=0 改成了 style.height='auto'; 其实按道理来说style.width=marqueesWidth 也要改一下 style.width=marqueesWidth+"px"
上下左右都支持,我稍微改了好fxmarquee中的代码就可以实现上下左右无缝滚动了
如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0040)http://feiyu.asgard.cn/jquery/fxmarquee/ -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>fxMarquee - jQuery内容滚动插件</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK
href="fxMarquee - jQuery内容滚动插件.files/default.css" type=text/css rel=stylesheet>
<SCRIPT src="fxMarquee - jQuery内容滚动插件.files/jquery.js" type=text/javascript></SCRIPT>
<SCRIPT src="fxMarquee - jQuery内容滚动插件.files/jquery.chili.js" type=text/javascript></SCRIPT>
<SCRIPT src="fxMarquee - jQuery内容滚动插件.files/jquery.feiyu51la.js" type=text/javascript></SCRIPT>
<SCRIPT src="fxMarquee - jQuery内容滚动插件.files/global.js" type=text/javascript></SCRIPT>
<SCRIPT src="fxMarquee - jQuery内容滚动插件.files/jquery.fxMarquee.pack.js" type=text/javascript></SCRIPT><SCRIPT type=text/javascript>
$(function() {
$(".demo1").fxMarquee({speed:10, direction:'left'});
});</SCRIPT><STYLE type=text/css>
.demo1 {
OVERFLOW: hidden;POSITION: relative; width:300px; HEIGHT: 134px
}
.demo1 UL {
POSITION: absolute ; ZOOM: 1;float:left;
}
.demo1 LI {
FLOAT: left; list-style:none; WIDTH: 300px;
}
</STYLE><META content="MSHTML 6.00.2900.5848" name=GENERATOR></HEAD>
<BODY>
<DIV id=hd>
<H1>fxMarquee</H1></DIV>
<DIV id=bd>
<P>演示一</P>
<DIV class=demo1>
<!-- 上下滚动时,设置UL的width为100% -->
<!-- <UL style=" WIDTH:100%; "> -->
<!-- 左右滚动时,设置UL的width为LI的两倍以上,比如2000px -->
<UL style=" WIDTH:2000px; ">
<li>
中俄军演举行实兵实弹演练 <br>
天文爱好者乘飞机追拍日全食 <br>
首轮中美战略与经济对话议程公布 <br>
黑龙江鸡西煤矿发生水灾23人被困 <br>
印尼爆炸嫌犯过安检录像 <br>
各地日全食精华瞬间回放 <br>
</li>
</UL>
</DIV>
</BODY>
</HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>向左滚动的文字特效JS代码</title>
</head>
<body>
<p>style="overflow:hidden;height:24px; line-height:24px;width:600px; border:1px solid #666; white-space:nowrap;" 这一段,向左滚动的文字特效需要这一段样式的配合,在这里宽、高、和white-space:nowrap (强制不换行)是必须的。</p>
<div id="demo" style="overflow:hidden;height:24px; line-height:24px;width:600px; border:1px solid #666; white-space:nowrap;">
<div id="demo1"> <a href="http://www.seo371.cn" title="网站建设|网站优化|专业网站设计">懒人建站</a> http://www.seo371.cn 网站建设|网站优化|专业网站设计 向左滚动的文字特效JS代码,这个向左滚动的文字特效JS代码比较简洁,代码量很少,你可以扩展一下你完全可以在这里定义图片或者图文结合等等形式,这是一个容器。</div>
<div id="demo2"></div>
</div>
<script style="text/javascript">
var speed=40;//数值越大,速度越慢
var demo2=document.getElementById("demo2");
var demo1=document.getElementById("demo1");
var demo=document.getElementById("demo");
function MarqueeLeft(){
if(demo2.offsetWidth-demo.scrollLeft<=0)
demo.scrollLeft-=demo1.offsetWidth
else{
demo.scrollLeft++
}
}
var MyMar=setInterval(MarqueeLeft,speed);
demo.onmouseover=function() {clearInterval(MyMar);}
demo.onmouseout=function() {MyMar=setInterval(MarqueeLeft,speed);}
</script>
</body>
</html>