首頁  >  文章  >  web前端  >  原生js實作自動輪播圖

原生js實作自動輪播圖

小云云
小云云原創
2018-03-22 17:05:534223瀏覽


輪播圖是現在網站網頁上最常見的效果之一,很多網站上都會用到,淘寶京東等等。有些自動選項卡也是需要用到的,而且它的可重複性高。在這裡分享一下,用js原生程式碼,實現輪播圖的常見效果!

輪播圖的原理

一系列的大小相等的圖片平鋪,利用CSS佈局只顯示一張圖片,其餘隱藏。透過計算偏移量利用定時器實現自動播放。


Html佈局

首先父容器banner存放所有內容,子容器img-list存放圖片。子容器list存放按鈕小圓點。圓點我使用了背景圖的方式!

<p id="banner">
    <ul id="img-list">  
       
        <li><img src="images/banner1.png" alt="1"/></li>
        <li><img src="images/banner2.jpg" alt="2"/></li>
        <li><img src="images/banner3.png" alt="3"/></li>

    </ul>
    <p id="list">
        <span index="1" class="on"></span>
        <span index="2"></span>
        <span index="3"></span>
    </p>
</p>
css修飾

1、對盒子模型,文檔流程的理解,絕對定位問題。

2、圖片有固定的的寬高,先在img-list中設定三張圖片總共的寬,多餘的將overflow: hidden;進行隱藏!載將其圖片下的li設定往右浮動。

3、將list span中的寬高固定,給予個背景圖。第一張圖片上設個預設的黃色圓點圖片。

#banner {
    width:100%;
    padding:0;
    clear: both;
    position: relative;
    height: 400px;
    z-index:1;
}

#img-list {
    display: block;
    width:5760px;
    height: 400px;
    overflow: hidden;
    z-index:1;
    position: relative;
}
#img-list li{
    float: left;
    width:100%;
    height: 400px;
    overflow: hidden;
    /* position: absolute;
    top:0;
    left:0; */
    z-index: 2;
}
#list {
    width:100%;
    height:18px;
    text-align: center;
    position: absolute;
    bottom: 10px;
    z-index: 100;
}
#list > span {
    width:18px;
    height: 18px;
    overflow: hidden;
    display: inline-block;
    margin:0 2px;
    background: url(../images/yuan.png);
    cursor: pointer;
}
#list .on {
    background: url(../images/huanyu.png);
}
JS效果

1、首先我們先設定自動播放的函數

2、然後滑鼠滑過容器時停止播放,滑鼠離開整個容器時繼續播放至下一張。

3、再定義並呼叫自動播放函數

var banner=document.getElementById(&#39;banner&#39;);
  var imglist=document.getElementById(&#39;img-list&#39;).getElementsByTagName("li");
  var list=document.getElementById(&#39;list&#39;).getElementsByTagName(&#39;span&#39;);
var index=0;
  var timer=null;
 //设置自动播放函数
  function autoPlay () {
      if (++index >= imglist.length) {index = 0};
      changeImg(index);
  }

  // 鼠标划过整个容器时停止自动播放
  banner.onmouseover = function () {
      clearInterval(timer);
  }

  // 鼠标离开整个容器时继续播放至下一张
  banner.onmouseout=function(){
      timer=setInterval(autoPlay,2000);
  }
  / 定义并调用自动播放函数
  timer = setInterval(autoPlay, 2000);

接著定義圖片的切換函數

// 定义图片切换函数
  function changeImg (curIndex) {
      for (var i = 0; i < imglist.length; i++) {

          imglist[i].style.display = "none";
          list[i].className = "";
      }
      imglist[curIndex].style.display = "block";
      list[curIndex].className = "on";
  }

最後遍歷所有數位導航實現劃過切換至對應的圖片,需獲得它的索引值

for (var i = 0; i < list.length; i++) {
  list[i].index=i;
 list[i].onmouseover = function () {
 clearInterval(timer);
 changeImg(this.index);
 };

到此為止,我們的輪播所有程式碼完成!

相關推薦:

微信小程式輪播圖功能開發實例

#jquery實作PC端輪播圖程式碼

兩種js實作輪播圖的方式

#

以上是原生js實作自動輪播圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn