前端基本功:JS(十)自動(dòng)輪播圖

自動(dòng)輪播圖.gif

完整源碼:

<!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>無(wú)標(biāo)題文檔</title>
<style type="text/css">
*{ padding:0; margin:0; list-style:none; border:0;}
.all{
  width:500px;
  height:200px;
  padding:7px;
  border:1px solid #ccc;
  margin:100px auto;
  position:relative;
}
.screen{
    width:500px;
    height:200px;
     overflow:hidden; 
    position:relative;
}

.screen li{ width:500px; height:200px; overflow:hidden; float:left;}
.screen ul{ position:absolute; left:0; top:0px; width:3000px;}
.all ol{ position:absolute; right:10px; bottom:10px; line-height:20px; text-align:center;}
.all ol li{ float:left; width:20px; height:20px; background:#fff; border:1px solid #ccc; margin-left:10px; cursor:pointer;}
.all ol li.current{ background:yellow;}

</style>
<script type="text/javascript">
    function animate(obj,target){
        clearInterval(obj.timer);  // 先清除定時(shí)器
        var speed = obj.offsetLeft < target ? 15 : -15;  // 用來(lái)判斷 應(yīng)該 +  還是 -
        obj.timer = setInterval(function() {
            var result = target - obj.offsetLeft; // 因?yàn)樗麄兊牟钪挡粫?huì)超過(guò)5
            obj.style.left = obj.offsetLeft + speed + "px";
            if(Math.abs(result)<=15)  // 如果差值不小于 5 說(shuō)明到位置了
            {
                clearInterval(obj.timer);
                obj.style.left = target + "px";  // 有5像素差距   我們直接跳轉(zhuǎn)目標(biāo)位置
            }
        },10)
    }
    window.onload = function() {
       // 獲取元素
        var box = document.getElementById("all");  // 大盒子
        var ul = document.getElementById("ul");
        var ulLis = ul.children;

       // 操作元素

       // 因?yàn)槲覀円鰺o(wú)縫滾動(dòng)  洲拇,所以要克隆第一張盗胀,放到最后一張后面去
       // a.appendchild(b)   把 b 放到 a 的最后面
        // 1. 克隆完畢
        ul.appendChild(ul.children[0].cloneNode(true));

        // 2. 創(chuàng)建 ol  和  小 li
        console.log(ulLis.length);
        var ol = document.createElement("ol");  // 生成的是ol
        box.appendChild(ol); // 把ol 追加到  box 里面
        for(var i=0;i<ulLis.length-1;i++)
        {
            var li = document.createElement("li");
            li.innerHTML = i + 1;  //  給里面小的li 文字  1 2 3 4 5
            ol.appendChild(li);  // 添加到 ol 里面
        }
        ol.children[0].className = "current";

        //3. 開始動(dòng)畫部分
        var olLis = ol.children;
         for(var i=0; i<olLis.length;i++)
         {
             olLis[i].index = i;  // 獲得當(dāng)前第幾個(gè)小li 的索引號(hào)
             olLis[i].onmouseover = function() {
                 for(var j=0;j<olLis.length;j++)
                 {
                     olLis[j].className = "";  // 所有的都要清空
                 }
                 this.className = "current";
                 animate(ul,-this.index*500)
                 // 調(diào)用動(dòng)畫函數(shù)  第一個(gè)參數(shù)  誰(shuí)動(dòng)畫     第二個(gè)  走多少
                 square = key = this.index;  // 當(dāng)前的索引號(hào)為主
             }
         }
         //  4. 添加定時(shí)器
        var timer = null;   // 輪播圖的定時(shí)器
        var key = 0;  //控制播放張數(shù)
        var square = 0; // 控制小方塊
          timer = setInterval(autoplay,1000);  // 開始輪播圖定時(shí)器
          function autoplay() {
              key++;  // 先 ++
              if(key>ulLis.length - 1)  // 后判斷
              {
                  ul.style.left = 0;  // 迅速調(diào)回
                  key = 1;  // 因?yàn)榈?張就是第一張  第6張播放 下次播放第2張
              }
              animate(ul,-key*500);  // 再執(zhí)行
              // 小方塊
              square++;
              if(square > olLis.length -1)
              {
                  square = 0;
              }
              for(var i=0;i<olLis.length;i++)   // 先清除所有的
              {
                  olLis[i].className = "";
              }
              olLis[square].className = "current";  // 留下當(dāng)前的
          }
          //last最后  鼠標(biāo)經(jīng)過(guò)大盒子要停止定時(shí)器
         box.onmouseover = function() {
             clearInterval(timer);
         }
         box.onmouseout = function() {
             timer = setInterval(autoplay,1000);  // 開始輪播圖定時(shí)器
         }
    }
</script>

</head>

<body>
<div class="all" id='all'>
    <div class="screen">
        <ul id="ul">
            <li><img src="images/taobao/1.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/2.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/3.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/4.jpg" width="500" height="200" /></li>
            <li><img src="images/taobao/5.jpg" width="500" height="200" /></li>
        </ul>
    </div>

</div>
</body>
</html>

此案例的圖片素材:
鏈接:http://pan.baidu.com/s/1jI2TNYA 密碼:u70f

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市豆励,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌良拼,老刑警劉巖觅玻,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異划栓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)条获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門忠荞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事委煤√糜停” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵碧绞,是天一觀的道長(zhǎng)府框。 經(jīng)常有香客問我,道長(zhǎng)讥邻,這世上最難降的妖魔是什么迫靖? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮计维,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撕予。我一直安慰自己鲫惶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布实抡。 她就那樣靜靜地躺著欠母,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吆寨。 梳的紋絲不亂的頭發(fā)上赏淌,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音啄清,去河邊找鬼六水。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辣卒,可吹牛的內(nèi)容都是我干的掷贾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼荣茫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼想帅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起啡莉,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤港准,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咧欣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浅缸,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年魄咕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疗杉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烟具,靈堂內(nèi)的尸體忽然破棺而出梢什,到底是詐尸還是另有隱情,我是刑警寧澤朝聋,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布嗡午,位于F島的核電站,受9級(jí)特大地震影響冀痕,放射性物質(zhì)發(fā)生泄漏荔睹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一言蛇、第九天 我趴在偏房一處隱蔽的房頂上張望僻他。 院中可真熱鬧,春花似錦腊尚、人聲如沸吨拗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)劝篷。三九已至,卻和暖如春民宿,著一層夾襖步出監(jiān)牢的瞬間娇妓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工活鹰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哈恰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓志群,卻偏偏與公主長(zhǎng)得像蕊蝗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赖舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容