关于实现滚动效果现在提供一个新的类库,功能更多,浏览器兼容性更强,点此移步过去看看。
水平滚动和垂直滚动的代码已经有很多了,这篇文章可以看成是多余的。不过还是有几个亮点:1、使用jquery;2、使用div+css;3、兼容IE、Firefox、Opera、Chrome;4、兼容XHTML 1.0? Transitional。
发布一个例子,点击下载。
直接看代码吧:
<html> <head> <title>单张图片循环滚动</title> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <script type="text/javascript"> //定时器间隔 var interval=30; $(document).ready( function(){ //用左侧的内容填充右侧 $("#right").html($("#left").html()); //启动定时器,定时执行leftloop函数 timename=setInterval("leftloop()",interval); } ); function leftloop(){ //判断是否左侧内容全部进入滚动条 //如果是,从新开始 if($("#left").outerWidth()-$("#content").scrollLeft()<=0){ var left=$("#content").scrollLeft()-$("#left").outerWidth(); $("#content").scrollLeft(left); }else{ var left=$("#content").scrollLeft()+1; $("#content").scrollLeft(left); } $("#foot").html("scrollLeft:"+$("#content").scrollLeft()); } </script> <style type="text/css"> /*兼容IE和其它浏览器,使并列的div不换行*/ .fordisplay{display:inline-block; zoom:1;} .fordisplay{display:inline !ie} .fordisplay{display:inline \9;} </style> </head> <body> <div id="title" style="width:1279px;height:210px;"><img src="1.jpg" /></div> <!--// 使用display:inline;white-space:nowrap,使不换行。 使用overflow:hidden隐藏超出的部分。 //--> <div id="content" style="width:1279px;overflow:hidden;white-space:nowrap;"> <div id="left" style="width:1340px;" class="fordisplay"> <ul style="display:inline;"> <li style="display:inline;float:left;"><img src="2.jpg" /></li> <li style="display:inline;float:left;"><img src="2.jpg" /></li> <li style="display:inline;float:left;"><img src="2.jpg" /></li> <li style="display:inline;float:left;"><img src="2.jpg" /></li> </ul> </div><div id="right" style="width:1340px;" class="fordisplay"></div> </div> <div id="foot"></div> </body> </html>
注意id=”right”的div紧跟前边div,没有换行和空格,显示的时候就不会出现空格了。
关于inline-block产生间距的问题:
1)在父容器定义font-size:0px; 然后对定义display:inline-block的容器重新定义字体大小。此方法兼容FF跟IE,不兼容CHROME
2)在父容器定义letter-spacing:-4px; 然后对定义display:inline-block的容器重新定义letter-spacing:0px,“-4px”数值来自字体大小
3)把inline-block元素全部写在一行,去掉空格与换行。
上边的代码运行起来没什么问题,但是在XHTML 1.0标准下IE不能正常运行。改了半天,代码如下:
<!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"> <head> <title>图片水平循环滚动</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script type="text/javascript"> //定时器间隔 var interval=30; $(document).ready( function(){ //用左侧的内容填充右侧 $("#right").html($("#left").html()); //设置外部容器的宽度,防止IE下div换行 $("#content_body").outerWidth($("#left").outerWidth()*2); //启动定时器,定时执行leftloop函数 timename=setInterval("leftloop()",interval); } ); function leftloop(){ //判断是否左侧内容全部进入滚动条 //如果是,从新开始 if($("#left").outerWidth()-$("#content").scrollLeft()<=0){ var left=$("#content").scrollLeft()-$("#left").outerWidth(); $("#content").scrollLeft(left); }else{ var left=$("#content").scrollLeft()+1; $("#content").scrollLeft(left); } $("#foot").html("scrollLeft:"+$("#content").scrollLeft()); } </script> <style type="text/css"> #title{height:50px;} #content{width:1200px;height:606px;margin:0;overflow:hidden;white-space:nowrap;border:10px solid #cccccc;} .fordisplay{margin:0;display:inline-block;zoom:1}/*所有浏览器*/ .fordisplay{display:inline\9;}/*IE8以及以下版本浏览器*/ .fordisplay ul{margin:0;padding:0;display:inline;font-size:0;} /*伟大的google也不是每件事都做的好*/ @media screen and (-webkit-min-device-pixel-ratio:0) { .fordisplay ul{ letter-spacing:-6px; } } .fordisplay ul li{display:inline;letter-spacing:0} </style> </head> <body> <div id="title">图片水平循环滚动</div> <div id="content"> <div id="content_body"> <div id="left"> <ul> <li><img src="images/1.png" /></li> <li><img src="images/2.png" /></li> <li><img src="images/3.png" /></li> <li><img src="images/4.png" /></li> </ul> </div><div id="right"></div> </div> </div> <div id="foot"></div> </body> </html>
@603316800
已经处理,请重新下载
ie8 加上这句话就不行了
这个不错,不过在IE8里面就没有滚动的效果了,不知道是IE8的scrollLeft()有问题还是JQ里面scrollLeft()的一个BUG
我的IE8可以啊,是不是别的问题。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论