javascript實現圖片滾動

奮程式序猿發表於2014-02-11

閒來無事搗鼓了一個原來的js圖片滾動

首先看看 靜態頁的結構:

<body>
<a href="javascript: le()">向左</a>
<a href="javascript: re()">向右</a>
<div id="img">
<ul id="imgul">
<li><img src="img/1.jpg" height="150" width="200"/></li>
<li><img src="img/2.jpg" height="150" width="200" /></li>
<li><img src="img/3.jpg" height="150" width="200"/></li>
<li><img src="img/4.jpg" height="150" width="200"/></li>
</ul>
</div>
</body>

上面兩個a標籤 是控制圖片滾動的走向

關鍵是div  ul  li  <img> 的結構      div裡面是ul 人後是li 裡面是圖片img 標籤

讓li 有浮動 然後給 div 加一個左右外邊距自動    在給 div 一個相對定位  ul一個絕對定位 

大體的佈局就差不多了

滾動的大體思路就是,通過css定位和js定時器 改變ul 的left 屬性 來實現滾動。

 

下面就是js程式碼:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
<style type="text/css">
*{
    padding:0px;
    margin:0px;
    }

li{
    height:150px;
    width:200px;
    float:left;
    margin:10px;
    }

ul{
    width:880px;
    height:170px;
    list-style-type: none;
    background-color:#FFF;
    position:absolute;
    left:0;
    top:0;

    }
    
div{
    width:880px;
    height:170px;
    margin-top:100px;
    margin-left:auto;
    margin-right:auto;
    background-color:#FF0000;
    position:relative;
    overflow:hidden;
    }

</style>
<script>
var f=-1;//新建一個全域性變數
function le()//點選向左呼叫的方法
{
    f=-1;
    }
function re()//點選向右呼叫的方法
{
    f=1;
    }
window.onload=function (){
    odiv=document.getElementById('div');//獲取div
    oul=document.getElementById('ul');//獲取ul
    oul.innerHTML=oul.innerHTML+oul.innerHTML; //複製一份ul 裡的內容
    oul.style.width=oul.offsetWidth*2+'px';//應為ul 裡的內容比原來多了一倍所以寬也要比原來多一倍
    
    
    //實現圖片滾動的函式
    function cc (){
        //判斷圖片滾動的位置  向左時的情況
        if(oul.offsetLeft<-oul.offsetWidth/2)
        {            
            oul.style.left=0+'px';
            }
            
                //判斷圖片滾動的位置  向右時的情況
                if(oul.offsetLeft>0)
        {            
            oul.style.left=-oul.offsetWidth/2+'px';
            }
               //f為 上面的全域性變數  為 正則是向右  為負則是向左
        oul.style.left=oul.offsetLeft+f+'px';
        }
        //定時器
    var time=setInterval(cc,10);
     //滑鼠移動到div上時 停止定時器
    odiv.onmouseover=function (){
            clearInterval(time);
            
            };
            //滑鼠移出div時 在次執行定時器
    odiv.onmouseout=function (){
            time=setInterval(cc,10);
            
            };

    };
</script>
</head>

<body>
<a href="javascript: le()">向左</a>
<a href="javascript: re()">向右</a>
<div id="div">
 <ul id="ul">
   <li><img src="img/1.jpg" height="150"  width="200"/></li>
   <li><img src="img/2.jpg" height="150"  width="200" /></li>
   <li><img src="img/3.jpg" height="150"  width="200"/></li>
   <li><img src="img/4.jpg" height="150"  width="200"/></li>
 </ul>
</div>
</body>
</html>

 

大家如果有什麼建議可以提出來!!謝謝!!

相關文章