<marquee ONMOUSEOUT="this.start()" ONMOUSEOVER="this.stop()" DIRECTION="LEFT" scrollamount=3 behavior="scroll" loop="-1" deplay="0">
<table>
<tr>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201204/23143603swol.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201207/231227072z7f.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201204/23143603swol.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201207/231227072z7f.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201204/23143603swol.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201207/231227072z7f.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201207/231227072z7f.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
<td>
<a href="http://jz.shangbao.net.cn/d/c/" target="_blank" border="0"><img src="pic/201207/231227072z7f.jpg" border="0" style="width:150px;height:100px"/></a>
</td>
</tr>
</table>
</marquee>

以上实现的图片滚动,两轮滚动之间有空白,为解决上面的问题,查找了以下资料。

实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo1的scrollTop或者scrollLeft达到滚动的目的,当滚动至demo1与demo2的交界处时直接跳回初始位置,因为demo1与demo2一样,所以分不出跳动的瞬间,从而达到“无缝”滚动的目的。
 
在原作者的基础上做了一定修改,主要还是在样式上面,将表格更换为标签。
 
先了解一下对象的几个的属性:
 
innerHTML:设置或获取位于对象起始和结束标签内的 HTML
 
scrollHeight: 获取对象的滚动高度。
 
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
 
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
 
scrollWidth:获取对象的滚动宽度
 
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
 
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
 
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
 
offsetWidth:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度
 
图片上无缝滚动
<style type="text/css"> 
<!-- 
#demo { 
    background: #FFF; 
    overflow:hidden; 
    border: 1px dashed #CCC; 
    height: 100px; 
    text-align: center; 
    float: left; 
#demo img { 
    border: 3px solid #F2F2F2; 
    display: block; 
--> 
</style> 
向上滚动 
<div id="demo"> 
<div id="demo1"> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
</div> 
<div id="demo2"></div> 
</div> 
<script> 
<!-- 
var speed=10; //数字越大速度越慢 
var tab=document.getElementById("demo"); 
var tab1=document.getElementById("demo1"); 
var tab2=document.getElementById("demo2"); 
tab2.innerHTML=tab1.innerHTML;          //克隆demo1为demo2 
function Marquee(){ 
if(tab2.offsetTop-tab.scrollTop<=0)//当滚动至demo1与demo2交界时 
tab.scrollTop-=tab1.offsetHeight //demo跳到最顶端 
else{ 
tab.scrollTop++ 
var MyMar=setInterval(Marquee,speed); 
tab.onmouseover=function() {clearInterval(MyMar)};//鼠标移上时清除定时器达到滚动停止的目的 
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠标移开时重设定时器 
--> 
</script>
 
图片下无缝滚动
<style type="text/css"> 
<!-- 
#demo { 
    background: #FFF; 
    overflow:hidden; 
    border: 1px dashed #CCC; 
    height: 100px; 
    text-align: center; 
    float: left; 
#demo img { 
    border: 3px solid #F2F2F2; 
    display: block; 
--> 
</style> 
向下滚动 
<div id="demo"> 
<div id="demo1"> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
</div> 
<div id="demo2"></div> 
</div> 
<script> 
<!-- 
var speed=10; //数字越大速度越慢 
var tab=document.getElementById("demo"); 
var tab1=document.getElementById("demo1"); 
var tab2=document.getElementById("demo2"); 
tab2.innerHTML=tab1.innerHTML;          //克隆demo1为demo2 
tab.scrollTop=tab.scrollHeight 
function Marquee(){ 
if(tab1.offsetTop-tab.scrollTop>=0)//当滚动至demo1与demo2交界时 
tab.scrollTop+=tab2.offsetHeight //demo跳到最顶端 
else{ 
tab.scrollTop-- 
var MyMar=setInterval(Marquee,speed); 
tab.onmouseover=function() {clearInterval(MyMar)};//鼠标移上时清除定时器达到滚动停止的目的 
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠标移开时重设定时器 
--> 
</script>
 
图片左无缝滚动
<style type="text/css"> 
<!-- 
#demo { 
    background: #FFF; 
    overflow:hidden; 
    border: 1px dashed #CCC; 
    width: 500px; 
#demo img { 
    border: 3px solid #F2F2F2; 
#indemo { 
    float: left; 
    width: 800%; 
#demo1 { 
    float: left; 
#demo2 { 
    float: left; 
--> 
</style> 
向左滚动 
<div id="demo"> 
<div id="indemo"> 
<div id="demo1"> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
</div> 
<div id="demo2"></div> 
</div> 
</div> 
<script> 
<!-- 
var speed=10; //数字越大速度越慢 
var tab=document.getElementById("demo"); 
var tab1=document.getElementById("demo1"); 
var tab2=document.getElementById("demo2"); 
tab2.innerHTML=tab1.innerHTML; 
function Marquee(){ 
if(tab2.offsetWidth-tab.scrollLeft<=0) 
tab.scrollLeft-=tab1.offsetWidth 
else{ 
tab.scrollLeft++; 
var MyMar=setInterval(Marquee,speed); 
tab.onmouseover=function() {clearInterval(MyMar)}; 
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)}; 
--> 
</script>
 
图片右无缝滚动
<style type="text/css"> 
<!-- 
#demo { 
    background: #FFF; 
    overflow:hidden; 
    border: 1px dashed #CCC; 
    width: 500px; 
#demo img { 
    border: 3px solid #F2F2F2; 
#indemo { 
    float: left; 
    width: 800%; 
#demo1 { 
    float: left; 
#demo2 { 
    float: left; 
--> 
</style> 
向右滚动 
<div id="demo"> 
<div id="indemo"> 
<div id="demo1"> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
<a href="#"><img src="http://www.cnrui.cn/other/link/Clear_logo.gif" border="0" /></a> 
</div> 
<div id="demo2"></div> 
</div> 
</div> 
<script> 
<!-- 
var speed=10; //数字越大速度越慢 
var tab=document.getElementById("demo"); 
var tab1=document.getElementById("demo1"); 
var tab2=document.getElementById("demo2"); 
tab2.innerHTML=tab1.innerHTML; 
function Marquee(){ 
if(tab.scrollLeft<=0) 
tab.scrollLeft+=tab2.offsetWidth 
else{ 
tab.scrollLeft-- 
var MyMar=setInterval(Marquee,speed); 
tab.onmouseover=function() {clearInterval(MyMar)}; 
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)}; 
--> 
</script>
小注:
1. demo的 width: 500px是可以改动的。
2. 图片必须覆盖500px的宽度,即图片的数量要超过一定的数量,否则出不了滚动的效果,或者滚动一会就停止了。

图片左右循环连续滚动代码,解决marquee的留白问题的更多相关文章

  1. marquee上下左右循环无缝滚动代码

    一.横向滚动<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN "><HTML>< ...

  2. AdapterView 和 RecyclerView 的连续滚动

    AdapterView 和 RecyclerView 的连续滚动 android RecyclerView tutorial 概述 ListView 和 GridView 的实现方式 Recycler ...

  3. JS连续滚动幻灯片:原理与实现

    什么是连续滚动幻灯片?打开一些网站的首页,你会发现有一块这样的区域:一张图片,隔一段时间滑动切换下一张:同时,图片两端各有一个小按钮,供你手动点选下一张:底部有一排小圆圈,供你选定特定的某帧图片.这就 ...

  4. DIV+CSS图片不间断滚动jquery特效(Marquee插件)及移动标签marquee整理

    推荐一个jQuery的无缝文字滚动效果,同时也可以滚动图片,也叫做跑马灯效果. 此jquery插件,依托jquery库,能实现各种滚动效果,且让HTML代码符合W3C标准. marquee标签:创建一 ...

  5. jquery图片无缝滚动代码左右 上下无缝滚动图片

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. jquery 写的图片左右连续滚动

    <style type="text/css"> *{ margin:0; padding:0;} body { font:12px/1.8 Arial; color:# ...

  7. marquee|各种文字滚动代码(适用公告)

    marquee|各种文字滚动代码(适用公告)  

  8. 多行滚动jQuery循环新闻列表代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. HTML网页图片滚动代码

    <!--下面是向上滚动代码--> <div id=butong_net_top style=overflow:hidden;height:100;width:90;> < ...

随机推荐

  1. ASP.NET实现文件下载

    转:http://blog.csdn.net/codeshark/article/details/2473664 方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流, ...

  2. Xcode工程添加第三方文件的详细分析 Create folder references for any added folders

    在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...

  3. JavaScript--循环--打印星星和99乘法表

    1.打印99乘法表 function chengfa(){ //反复调用公式 for(var r=1;r<=9;r++){ for(var i=1,str="";i<= ...

  4. java 懒汉式--初步解决安全问题

    2016-07-28 00:10:14 懒汉式: class text { public String k;       private static text t=null;//右边代码结构比上边饿 ...

  5. Hive学习之七《 Sqoop import 从关系数据库抽取到HDFS》

    一.什么是sqoop Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ...

  6. Java学习-----单例模式

    一.问题引入 偶然想想到的如果把Java的构造方法弄成private,那里面的成员属性是不是只有通过static来访问呢:如果构造方法是private的话,那么有什么好处呢:如果构造方法是privat ...

  7. Debian ls 文件 文件夹颜色显示

    一.让debian终端文件显示不同颜色 vim  /etc/vim/vimrc取消“syntax on”的注释 二.让debian终端文件夹显示不同颜色 修改.bashrc文件,vim /root/. ...

  8. 写了一个jquery的 弹出层插件。

    下载地址:http://pan.baidu.com/s/1eQ26CMm ps:ajax加载做的,要有环境才能正常运行哦! //这是一个以ajax加载显示弹出层插件  参数(option): widt ...

  9. 获取当前元素节点的position和宽高(兼容)

    function objxy(n){ var o=document.getElementById(n),x=0,y=0,w=o.offsetWidth,h=o.offsetHeight if(o.ge ...

  10. 初学Javascript对象

    <script> var p=new Object(); //属性 p.width=; p.height=; p.num=; p.autotime=; //方法 p.autoplay=fu ...