亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS實現圖片輪播效果實例詳解【可自動和手動】

2019-11-19 11:53:39
字體:
來源:轉載
供稿:網友

本文實例講述了JS實現圖片輪播效果。分享給大家供大家參考,具體如下:

本次輪播效果圖如下:

具有以下功能:1.自動播放(鼠標進入顯示區域時停止播放) 2.左右焦點切換  3.底下小按鈕切換

以下為實現代碼:

首先是html代碼:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>最簡單的輪播效果</title></head><body><div class="box" id="box">  <div class="inner">    <!--輪播圖-->    <ul>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/1.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/2.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/3.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/4.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/5.jpg" alt=""></a></li>    </ul>    <ol class="bar">      小按鈕數量無法確定,由js動態生成    </ol>    <!--左右焦點-->    <div id="arr">       <span id="left"> <</span>       <span id="right">></span>    </div>  </div></div></body></html>

接下來是css樣式:

<style>    * {      margin: 0;      padding: 0    }    .box {      width: 500px;      height: 300px;      border: 1px solid #ccc;      margin: 100px auto;      padding: 5px;    }    .inner{      width: 500px;      height: 300px;      position: relative;      overflow: hidden;    }    .inner img{      width: 500px;      height: 300px;      vertical-align: top    }    ul {      width: 1000%;      position: absolute;      list-style: none;      left:0;      top: 0;    }    .inner li{      float: left;    }    ol {      position: absolute;      height: 20px;      right: 20px;      bottom: 20px;      text-align: center;      padding: 5px;    }    ol li{      display: inline-block;      width: 20px;      height: 20px;      line-height: 20px;      background-color: #fff;      margin: 5px;      cursor: pointer;    }    ol .current{      background-color: red;    }    #arr{      display: none;    }    #arr span{      width: 40px;      height: 40px;      position: absolute;      left: 5px;      top: 50%;      margin-top: -20px;      background: #fff;      cursor: pointer;      line-height: 40px;      text-align: center;      font-weight: bold;      font-family: '黑體';      font-size: 30px;      color: #000;      opacity: 0.5;      border: 1px solid #fff;    }    #arr #right {      right: 5px;      left: auto;    }

第三部分是最主要的js代碼:

<script>  /**   *   * @param id 傳入元素的id   * @returns {HTMLElement | null} 返回標簽對象,方便獲取元素   */  function my$(id) {    return document.getElementById(id);  }  //獲取各元素,方便操作  var box=my$("box");  var inner=box.children[0];  var ulObj=inner.children[0];  var list=ulObj.children;  var olObj=inner.children[1];  var arr=my$("arr");  var imgWidth=inner.offsetWidth;  var right=my$("right");  var pic=0;  //根據li個數,創建小按鈕  for(var i=0;i<list.length;i++){    var liObj=document.createElement("li");    olObj.appendChild(liObj);    liObj.innerText=(i+1);    liObj.setAttribute("index",i);    //為按鈕注冊mouseover事件    liObj.onmouseover=function () {      //先清除所有按鈕的樣式      for (var j=0;j<olObj.children.length;j++){        olObj.children[j].removeAttribute("class");      }      this.className="current";      pic=this.getAttribute("index");      animate(ulObj,-pic*imgWidth);    }  }  //設置ol中第一個li有背景顏色  olObj.children[0].className = "current";  //克隆一個ul中第一個li,加入到ul中的最后=====克隆  ulObj.appendChild(ulObj.children[0].cloneNode(true));  var timeId=setInterval(onmouseclickHandle,1000);  //左右焦點實現點擊切換圖片功能  box.onmouseover=function () {    arr.style.display="block";    clearInterval(timeId);  };  box.onmouseout=function () {    arr.style.display="none";    timeId=setInterval(onmouseclickHandle,1000);  };  right.onclick=onmouseclickHandle;  function onmouseclickHandle() {    //如果pic的值是5,恰巧是ul中li的個數-1的值,此時頁面顯示第六個圖片,而用戶會認為這是第一個圖,    //所以,如果用戶再次點擊按鈕,用戶應該看到第二個圖片    if (pic == list.length - 1) {      //如何從第6個圖,跳轉到第一個圖      pic = 0;//先設置pic=0      ulObj.style.left = 0 + "px";//把ul的位置還原成開始的默認位置    }    pic++;//立刻設置pic加1,那么此時用戶就會看到第二個圖片了    animate(ulObj, -pic * imgWidth);//pic從0的值加1之后,pic的值是1,然后ul移動出去一個圖片    //如果pic==5說明,此時顯示第6個圖(內容是第一張圖片),第一個小按鈕有顏色,    if (pic == list.length - 1) {      //第五個按鈕顏色干掉      olObj.children[olObj.children.length - 1].className = "";      //第一個按鈕顏色設置上      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";    }  }  left.onclick=function () {    if (pic==0){      pic=list.length-1;      ulObj.style.left=-pic*imgWidth+"px";    }    pic--;    animate(ulObj,-pic*imgWidth);    for (var i = 0; i < olObj.children.length; i++) {      olObj.children[i].removeAttribute("class");    }    //當前的pic索引對應的按鈕設置顏色    olObj.children[pic].className = "current";  };  //設置任意的一個元素,移動到指定的目標位置  function animate(element, target) {    clearInterval(element.timeId);    //定時器的id值存儲到對象的一個屬性中    element.timeId = setInterval(function () {      //獲取元素的當前的位置,數字類型      var current = element.offsetLeft;      //每次移動的距離      var step = 10;      step = current < target ? step : -step;      //當前移動到位置      current += step;      if (Math.abs(current - target) > Math.abs(step)) {        element.style.left = current + "px";      } else {        //清理定時器        clearInterval(element.timeId);        //直接到達目標        element.style.left = target + "px";      }    }, 10);  }</script>

所有用圖片如下:

1.jpg


2.jpg


3.jpg


4.jpg


5.jpg


下面是完整的代碼:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>最簡單的輪播效果</title>  <style>    * {      margin: 0;      padding: 0    }    .box {      width: 500px;      height: 300px;      border: 1px solid #ccc;      margin: 100px auto;      padding: 5px;    }    .inner{      width: 500px;      height: 300px;      position: relative;      overflow: hidden;    }    .inner img{      width: 500px;      height: 300px;      vertical-align: top    }    ul {      width: 1000%;      position: absolute;      list-style: none;      left:0;      top: 0;    }    .inner li{      float: left;    }    ol {      position: absolute;      height: 20px;      right: 20px;      bottom: 20px;      text-align: center;      padding: 5px;    }    ol li{      display: inline-block;      width: 20px;      height: 20px;      line-height: 20px;      background-color: #fff;      margin: 5px;      cursor: pointer;    }    ol .current{      background-color: red;    }    #arr{      display: none;    }    #arr span{      width: 40px;      height: 40px;      position: absolute;      left: 5px;      top: 50%;      margin-top: -20px;      background: #fff;      cursor: pointer;      line-height: 40px;      text-align: center;      font-weight: bold;      font-family: '黑體';      font-size: 30px;      color: #000;      opacity: 0.5;      border: 1px solid #fff;    }    #arr #right {      right: 5px;      left: auto;    }  </style></head><body><div class="box" id="box">  <div class="inner">    <!--輪播圖-->    <ul>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/1.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/2.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/3.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/4.jpg" alt=""></a></li>      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="images/5.jpg" alt=""></a></li>    </ul>    <ol class="bar">    </ol>    <!--左右焦點-->    <div id="arr">          <span id="left">            <          </span>      <span id="right">            >          </span>    </div>  </div></div><script>  /**   *   * @param id 傳入元素的id   * @returns {HTMLElement | null} 返回標簽對象,方便獲取元素   */  function my$(id) {    return document.getElementById(id);  }  //獲取各元素,方便操作  var box=my$("box");  var inner=box.children[0];  var ulObj=inner.children[0];  var list=ulObj.children;  var olObj=inner.children[1];  var arr=my$("arr");  var imgWidth=inner.offsetWidth;  var right=my$("right");  var pic=0;  //根據li個數,創建小按鈕  for(var i=0;i<list.length;i++){    var liObj=document.createElement("li");    olObj.appendChild(liObj);    liObj.innerText=(i+1);    liObj.setAttribute("index",i);    //為按鈕注冊mouseover事件    liObj.onmouseover=function () {      //先清除所有按鈕的樣式      for (var j=0;j<olObj.children.length;j++){        olObj.children[j].removeAttribute("class");      }      this.className="current";      pic=this.getAttribute("index");      animate(ulObj,-pic*imgWidth);    }  }  //設置ol中第一個li有背景顏色  olObj.children[0].className = "current";  //克隆一個ul中第一個li,加入到ul中的最后=====克隆  ulObj.appendChild(ulObj.children[0].cloneNode(true));  var timeId=setInterval(onmouseclickHandle,1000);  //左右焦點實現點擊切換圖片功能  box.onmouseover=function () {    arr.style.display="block";    clearInterval(timeId);  };  box.onmouseout=function () {    arr.style.display="none";    timeId=setInterval(onmouseclickHandle,1000);  };  right.onclick=onmouseclickHandle;  function onmouseclickHandle() {    //如果pic的值是5,恰巧是ul中li的個數-1的值,此時頁面顯示第六個圖片,而用戶會認為這是第一個圖,    //所以,如果用戶再次點擊按鈕,用戶應該看到第二個圖片    if (pic == list.length - 1) {      //如何從第6個圖,跳轉到第一個圖      pic = 0;//先設置pic=0      ulObj.style.left = 0 + "px";//把ul的位置還原成開始的默認位置    }    pic++;//立刻設置pic加1,那么此時用戶就會看到第二個圖片了    animate(ulObj, -pic * imgWidth);//pic從0的值加1之后,pic的值是1,然后ul移動出去一個圖片    //如果pic==5說明,此時顯示第6個圖(內容是第一張圖片),第一個小按鈕有顏色,    if (pic == list.length - 1) {      //第五個按鈕顏色干掉      olObj.children[olObj.children.length - 1].className = "";      //第一個按鈕顏色設置上      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";    }  }  left.onclick=function () {    if (pic==0){      pic=list.length-1;      ulObj.style.left=-pic*imgWidth+"px";    }    pic--;    animate(ulObj,-pic*imgWidth);    for (var i = 0; i < olObj.children.length; i++) {      olObj.children[i].removeAttribute("class");    }    //當前的pic索引對應的按鈕設置顏色    olObj.children[pic].className = "current";  };  //設置任意的一個元素,移動到指定的目標位置  function animate(element, target) {    clearInterval(element.timeId);    //定時器的id值存儲到對象的一個屬性中    element.timeId = setInterval(function () {      //獲取元素的當前的位置,數字類型      var current = element.offsetLeft;      //每次移動的距離      var step = 10;      step = current < target ? step : -step;      //當前移動到位置      current += step;      if (Math.abs(current - target) > Math.abs(step)) {        element.style.left = current + "px";      } else {        //清理定時器        clearInterval(element.timeId);        //直接到達目標        element.style.left = target + "px";      }    }, 10);  }</script></body></html>

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript圖片操作技巧大全》、《JavaScript切換特效與技巧總結》、《JavaScript運動效果與技巧匯總》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久| 久久精品视频va| 亚洲精品黄网在线观看| 成人a视频在线观看| 91系列在线播放| 欧美精品一本久久男人的天堂| 69av在线视频| 4444欧美成人kkkk| 欧美成人免费视频| 久久久久久成人精品| 69影院欧美专区视频| 一本一本久久a久久精品综合小说| 国产精品久久久精品| 日韩视频在线观看免费| 色吧影院999| 欧美激情视频网址| 日韩av电影国产| 富二代精品短视频| 国产一级揄自揄精品视频| 久久综合伊人77777| 国产精品爽黄69天堂a| 青青草原成人在线视频| 日韩中文字幕网站| 国产91av在线| 奇门遁甲1982国语版免费观看高清| 亚洲高清久久久久久| 欧美在线观看一区二区三区| 日韩欧美在线观看| 国产主播喷水一区二区| 亚洲国产成人精品一区二区| 国产精品对白刺激| 91伊人影院在线播放| 亚洲欧美综合区自拍另类| 精品国产乱码久久久久久天美| 国产欧美久久久久久| 国产欧美在线看| www.xxxx精品| 中文字幕一精品亚洲无线一区| 俺去亚洲欧洲欧美日韩| 欧美一级淫片videoshd| 91精品国产91久久久久久不卡| 精品精品国产国产自在线| 国产精品高清在线观看| 日韩在线国产精品| 久久6精品影院| 欧美一级视频一区二区| 久久久精品在线| 国产suv精品一区二区三区88区| 日韩黄在线观看| 欧美日韩国产专区| 国语自产精品视频在免费| 国内伊人久久久久久网站视频| 久久影院模特热| 日韩有码片在线观看| 97在线免费视频| 欧美激情在线一区| 91干在线观看| 亚洲新声在线观看| 欧美日韩亚洲一区二区| 亚洲免费视频在线观看| 成人午夜在线视频一区| 亚洲激情在线观看视频免费| 国产精品久久久久久久午夜| 亚洲国产精品福利| 国产一区二区三区在线视频| 久久影院资源网| 久久久国产视频91| 国产91在线视频| 久久久精品网站| 日韩色av导航| 久操成人在线视频| 国产精品福利观看| 欧美电影免费观看大全| 91欧美日韩一区| 成人疯狂猛交xxx| 国产亚洲福利一区| 国产精品免费在线免费| 国产精品久久久av| www.久久久久| 欧美日韩激情视频8区| 亚洲美女黄色片| 亚洲一区二区三区毛片| 欧美精品videossex性护士| 精品无人区乱码1区2区3区在线| 国产成人一区二区三区| 成人日韩av在线| 精品久久久国产精品999| 在线播放日韩av| 国产精品入口日韩视频大尺度| 亚洲天堂视频在线观看| 中文字幕av一区中文字幕天堂| 高清欧美性猛交xxxx| 亚洲大胆人体av| 国精产品一区一区三区有限在线| 久久色免费在线视频| 亚洲v日韩v综合v精品v| 亚洲小视频在线| 国产精品观看在线亚洲人成网| 国产精品自产拍在线观| 亚洲乱码国产乱码精品精天堂| 91久久久久久国产精品| 精品视频久久久久久久| 国产日韩av在线播放| 69视频在线播放| 国产精品久久久久久久久久久新郎| 久久久视频免费观看| 欧美俄罗斯性视频| 久久影视电视剧免费网站| 欧美日韩一区二区免费视频| 欧美综合在线第二页| 九九精品视频在线| 欧美日韩国产区| 欧美激情性做爰免费视频| 欧美性感美女h网站在线观看免费| 色悠悠久久久久| 国模精品系列视频| 亚洲综合日韩中文字幕v在线| 国产精品福利在线观看网址| 日韩hd视频在线观看| 国产91在线视频| 96pao国产成视频永久免费| 亚洲va码欧洲m码| 国产亚洲一级高清| 色噜噜久久综合伊人一本| 久久精品99久久久久久久久| 欧美日韩一区二区在线播放| 国产日本欧美一区二区三区| 国产网站欧美日韩免费精品在线观看| 精品国产网站地址| 亚洲美女久久久| 国内精品视频一区| 国产亚洲精品久久久久动| 综合网日日天干夜夜久久| 欧美成人久久久| 欧美在线亚洲一区| 欧美麻豆久久久久久中文| 91性高湖久久久久久久久_久久99| 亚洲人精品午夜在线观看| 欧美裸体男粗大视频在线观看| 国产亚洲一区精品| 欧美日本黄视频| 日本sm极度另类视频| 欧美日韩国产一区中文午夜| 亚洲精品v欧美精品v日韩精品| 国产日韩在线观看av| 久久久精品2019中文字幕神马| 精品中文字幕久久久久久| 久久精品国产久精国产一老狼| 亚洲成人1234| 国产精品pans私拍| 亚洲区一区二区| 日韩av免费网站| 国产精品日日摸夜夜添夜夜av| 日韩av在线免播放器| 国产精品劲爆视频| 2020久久国产精品| 亚洲日本成人女熟在线观看| 97av在线视频免费播放| 日韩在线观看免费高清完整版| 久久久在线免费观看| 精品国产精品自拍| 国内精品久久久久久中文字幕| 国产精品av在线播放| 欧美专区在线视频|