完整輪播圖案例

 <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: #DB192A;
    }

    #arr {
      display: none;
    }

    #arr span {
      width: 40px;
      height: 40px;
      position: absolute;
      left: 5px;
      top: 50%;
      margin-top: -20px;
      background: #000;
      cursor: pointer;
      line-height: 40px;
      text-align: center;
      font-weight: bold;
      font-family: '黑體';
      font-size: 30px;
      color: #fff;
      opacity: 0.3;
      border: 1px solid #fff;
    }

    #arr #right {
      right: 5px;
      left: auto;
    }
  </style>
</head>
<body>
<div class="all" id='box'>
  <div class="screen"><!--相框-->
    <ul>
      <li><img src="images/1.jpg" width="500" height="200"/></li>
      <li><img src="images/2.jpg" width="500" height="200"/></li>
      <li><img src="images/3.jpg" width="500" height="200"/></li>
      <li><img src="images/4.jpg" width="500" height="200"/></li>
      <li><img src="images/5.jpg" width="500" height="200"/></li>
    </ul>
    <ol>
    </ol>
  </div>
  <div id="arr"><span id="left">&lt;</span><span id="right">&gt;</span></div>
</div>
 //獲取最外面的div
  var box = my$("box");
  //獲取相框
  var screen = box.children[0];
  //獲取相框的寬度
  var imgWidth = screen.offsetWidth;
  //獲取ul
  var ulObj = screen.children[0];
  //獲取ul中的所有的li
  var list = ulObj.children;
  //獲取ol
  var olObj = screen.children[1];
  //焦點的div
  var arr = my$("arr");

  var pic = 0;//全局變量
  //創(chuàng)建小按鈕----根據(jù)ul中的li個數(shù)
  for (var i = 0; i < list.length; i++) {
    //創(chuàng)建li標(biāo)簽,加入到ol中
    var liObj = document.createElement("li");
    olObj.appendChild(liObj);
    liObj.innerHTML = (i + 1);
    //在每個ol中的li標(biāo)簽上添加一個自定義屬性,存儲索引值
    liObj.setAttribute("index", i);
    //注冊鼠標(biāo)進入事件
    liObj.onmouseover = function () {
      //先干掉所有的ol中的li的背景顏色
      for (var j = 0; j < olObj.children.length; j++) {
        olObj.children[j].removeAttribute("class");
      }
      //設(shè)置當(dāng)前鼠標(biāo)進來的li的背景顏色
      this.className = "current";
      //獲取鼠標(biāo)進入的li的當(dāng)前索引值
      pic = this.getAttribute("index");
      //移動ul
      animate(ulObj, -pic * imgWidth);
    };
  }
  //設(shè)置ol中第一個li有背景顏色
  olObj.children[0].className = "current";


  //克隆一個ul中第一個li,加入到ul中的最后=====克隆
  ulObj.appendChild(ulObj.children[0].cloneNode(true));

  //自動播放
 var timeId= setInterval(clickHandle,1000);

  //鼠標(biāo)進入到box的div顯示左右焦點的div
  box.onmouseover = function () {
    arr.style.display = "block";
    //鼠標(biāo)進入廢掉之前的定時器
    clearInterval(timeId);
  };
  //鼠標(biāo)離開到box的div隱藏左右焦點的div
  box.onmouseout = function () {
    arr.style.display = "none";
    //鼠標(biāo)離開自動播放
    timeId= setInterval(clickHandle,1000);
  };
  //右邊按鈕
  my$("right").onclick =clickHandle;
  function clickHandle() {
    //如果pic的值是5,恰巧是ul中l(wèi)i的個數(shù)-1的值,此時頁面顯示第六個圖片,而用戶會認(rèn)為這是第一個圖,
    //所以,如果用戶再次點擊按鈕,用戶應(yīng)該看到第二個圖片
    if (pic == list.length - 1) {
      //如何從第6個圖,跳轉(zhuǎn)到第一個圖
      pic = 0;//先設(shè)置pic=0
      ulObj.style.left = 0 + "px";//把ul的位置還原成開始的默認(rèn)位置
    }
    pic++;//立刻設(shè)置pic加1,那么此時用戶就會看到第二個圖片了
    animate(ulObj, -pic * imgWidth);//pic從0的值加1之后,pic的值是1,然后ul移動出去一個圖片
    //如果pic==5說明,此時顯示第6個圖(內(nèi)容是第一張圖片),第一個小按鈕有顏色,
    if (pic == list.length - 1) {
      //第五個按鈕顏色干掉
      olObj.children[olObj.children.length - 1].className = "";
      //第一個按鈕顏色設(shè)置上
      olObj.children[0].className = "current";
    } else {
      //干掉所有的小按鈕的背景顏色
      for (var i = 0; i < olObj.children.length; i++) {
        olObj.children[i].removeAttribute("class");
      }
      olObj.children[pic].className = "current";
    }

  };
  //左邊按鈕
  my$("left").onclick = function () {
    if (pic == 0) {
      pic = 5;
      ulObj.style.left = -pic * imgWidth + "px";
    }
    pic--;
    animate(ulObj, -pic * imgWidth);
    //設(shè)置小按鈕的顏色---所有的小按鈕干掉顏色
    for (var i = 0; i < olObj.children.length; i++) {
      olObj.children[i].removeAttribute("class");
    }
    //當(dāng)前的pic索引對應(yīng)的按鈕設(shè)置顏色
    olObj.children[pic].className = "current";

  };

  //設(shè)置任意的一個元素,移動到指定的目標(biāo)位置
  function animate(element, target) {
    clearInterval(element.timeId);
    //定時器的id值存儲到對象的一個屬性中
    element.timeId = setInterval(function () {
      //獲取元素的當(dāng)前的位置,數(shù)字類型
      var current = element.offsetLeft;
      //每次移動的距離
      var step = 10;
      step = current < target ? step : -step;
      //當(dāng)前移動到位置
      current += step;
      if (Math.abs(current - target) > Math.abs(step)) {
        element.style.left = current + "px";
      } else {
        //清理定時器
        clearInterval(element.timeId);
        //直接到達目標(biāo)
        element.style.left = target + "px";
      }
    }, 10);
  }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贷屎,一起剝皮案震驚了整個濱河市惫东,隨后出現(xiàn)的幾起案子拳球,更是在濱河造成了極大的恐慌驾孔,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诵闭,死亡現(xiàn)場離奇詭異采蚀,居然都是意外死亡,警方通過查閱死者的電腦和手機来屠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門虑椎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俱笛,你說我怎么就攤上這事捆姜。” “怎么了迎膜?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵泥技,是天一觀的道長。 經(jīng)常有香客問我磕仅,道長珊豹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任宽涌,我火速辦了婚禮平夜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卸亮。我一直安慰自己忽妒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布兼贸。 她就那樣靜靜地躺著段直,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溶诞。 梳的紋絲不亂的頭發(fā)上鸯檬,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音螺垢,去河邊找鬼喧务。 笑死,一個胖子當(dāng)著我的面吹牛枉圃,可吹牛的內(nèi)容都是我干的功茴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孽亲,長吁一口氣:“原來是場噩夢啊……” “哼坎穿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤玲昧,失蹤者是張志新(化名)和其女友劉穎栖茉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孵延,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡吕漂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隙袁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痰娱。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弃榨,死狀恐怖菩收,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲸睛,我是刑警寧澤娜饵,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站官辈,受9級特大地震影響箱舞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拳亿,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一晴股、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肺魁,春花似錦电湘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘾晃,卻和暖如春贷痪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹦误。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工劫拢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人强胰。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓舱沧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哪廓。 傳聞我的和親對象是個殘疾皇子狗唉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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