1. 程式人生 > >Javascript基礎——利用定時器實現的圖片無縫滾動(offsetLeft)

Javascript基礎——利用定時器實現的圖片無縫滾動(offsetLeft)

1、無縫滾動

原理:(1)讓div動起來,讓ul一直向左/向右移動;

      (2)即利用定時器讓物體從左到右或從右到左進行滾動。

採用offsetLeft——如oUl.style.left=oUl.offsetLeft-2+'px';(由左向右)

注意:offsetLeft為一個負值。

步驟:(1)複製li——innerHTML和+=,

      (2)修改ul的width—可把之前的1倍寬度擴充到兩倍

例如oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;

      (3)滾動過界時,重設位置,需要進行判斷

2、無縫滾動的擴充套件

(1)改變滾動的方向

a、修改滾動的速度speed

若改變大小,即表示滾動的速度發生改變

若改變正負,即表示滾動的方向

b、修改判斷條件

通過修改speed的正負,來改變滾動的方向

(2)滑鼠移入、暫停事件

a、滑鼠移入:關閉定時器clearInterval(timer);

 b、滑鼠移出:重新開啟定時器,即setInterval(function,1000);

相關的程式碼如下:

<span style="font-family:KaiTi_GB2312;font-size:14px;"><!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>定時器實現的圖片無縫滾動</title>
		<style>
			*{padding: 0;margin: 0;}
			#div1{
				position: relative;
				width:820px;height: 155px;
				margin: 100px auto;
				overflow: hidden;}
			#div1 ul{
				position:absolute;
				top:0;left: 0;
				background: #5F9EA0;
			}
			#div1 ul li{
				list-style: none;
				width: 205px;height: 155px;
				float: left;
			}
		</style>
		<script>
		
		window.onload=function(){
			var oDiv=document.getElementById('div1');
			var oUl=oDiv.getElementsByTagName('ul')[0];
			var aLi=oUl.getElementsByTagName('li');
			 
			var speed=2;  //利用速度speed控制方向;
			
			oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
			//求ul的寬度;
			oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';
			
			//移動的函式;
			function move(){
				if(oUl.offsetLeft<-oUl.offsetWidth/2){
					//由於offsetLeft為一個負值,所以需要加一個負號;
					oUl.style.left='0';
				}
				//由右向左;
				if(oUl.offsetLeft>0){
					oUl.style.left=-oUl.offsetWidth/2+'px';
				}
				//由左向右;
				oUl.style.left=oUl.offsetLeft+speed+'px';
			}	
			
			var timer=setInterval(move,30);
			//滑鼠移入,關閉定時器;
			oDiv.onmouseover=function(){
				clearInterval(timer);
			};
			//滑鼠移出,開啟定時器;
			oDiv.onmouseout=function(){
				timer=setInterval(move,30);
			};
			
			document.getElementsByTagName('a')[0].onclick=function(){
				speed=-2;
			};
			document.getElementsByTagName('a')[1].onclick=function(){
				speed=2;
			}
		};
		</script>
	</head>
	<body>
		<a href="javascript:;">向左</a>
		<a href="javascript:;">向右</a>
		<div id="div1">
			<ul>
				<li><img src="img/p1.png"></li>
				<li><img src="img/p2.png"></li>
				<li><img src="img/p3.png"></li>
				<li><img src="img/p4.png"></li>
			</ul>
		</div>
	</body>
</html></span><span style="font-size: 18px;">
</span>