原生javascript实现的水平图片无缝滚动效果

原生javascript实现的水平图片无缝滚动效果:
图片水平无缝滚动效果在大量的网站都有应用,特别是一些企业网站在展示产品的时候,因为是动态效果,所以能够给网站增色不少,相比静态图片展示更能够吸引用户的注意力,下面就通过实例代码介绍一下如何实现此效果。
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css"> 
#demo{ 
  background:#FFF; 
  overflow:hidden; 
  border:1px dashed #CCC; 
  width:500px; 
} 
#indemo{
  float:left;
  width:2000px;
} 
#indemo a{
  width:100px;
  height:100px;
  float:left;
  background-color:blue;
  margin-left:5px;
  text-align:center;
  line-height:100px;
  color:red;
  text-decoration:none;
}
#demo1{float:left;} 
#demo2{float:left;} 
</style>
<script type="text/javascript"> 
window.onload=function(){
  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>
</head>
<body>
<div id="demo">
  <div id="indemo">
    <div id="demo1"> 
      <a href="#">蚂蚁部落一</a> 
      <a href="#">蚂蚁部落二</a> 
      <a href="#">蚂蚁部落三</a> 
      <a href="#">蚂蚁部落四</a> 
      <a href="#">蚂蚁部落五</a> 
      <a href="#">蚂蚁部落六</a> 
    </div>
    <div id="demo2"></div>
  </div>
</div>
</body>
</html>

以上代码实现了我们要求,为了掩饰方便,将图片替换为文字,实际应用中,只要稍加修改就可以了,代码很简单,但是对于初学者来说可能就有点麻烦,下面就对它做一下注释。
一.代码注释:
1.window.onload=function(){},当文档内容完全加载完毕再去执行函数中的代码。
2.var speed=10,设置滚动的速度,值越小速度越快。
3.var tab=document.getElementById("demo"),根据id属性值获取对象。
4.tab2.innerHTML=tab1.innerHTML,复制一份内容给tab2.
5.function Marquee(){},此函数是滚动的核心实现。
6.if(tab2.offsetWidth-tab.scrollLeft<=0){tab.scrollLeft-=tab1.offsetWidth } ,判断向左滚动的尺寸是否小于等于tab2或者tab1的宽度,如果小于等于,则说明一个完整的图片队列滚动完毕,这个时候是tab2的接续在tab1的后面,这个时候重新设置tab.scrollLeft为0,也就是重新开始滚动,这样就实现了无缝滚动效果。
二.相关阅读:
1.innerHTML属性可以参阅js的innerHTML属性的用法一章节。 
2.offsetWidth属性可以参阅scrollTop、offsetHeight和offsetTop等属性用法详解一章节。 
3.scrollLeft属性可以参阅offsetLeft、clientLeft和scrollLeft等属性的用法一章节。 
4.setInterval()函数可以参阅setInterval()函数用法详解一章节。
5.clearInterval()函数可以参阅window对象的clearInterval()方法一章节。  

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=11997

更多内容可以参阅:http://www.softwhy.com/javascript/

你可能感兴趣的:(原生javascript实现的水平图片无缝滚动效果)