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

首頁 > 開發 > JS > 正文

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

2024-05-06 16:49:35
字體:
來源:轉載
供稿:網友

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

本次輪播效果圖如下:

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"      <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"      <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"      <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"      <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"    </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

JS,圖片輪播

2.jpg

JS,圖片輪播

3.jpg

JS,圖片輪播

4.jpg

JS,圖片輪播

5.jpg

JS,圖片輪播

下面是完整的代碼:

<!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"      <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"      <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"      <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"      <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"    </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/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美裸体视频网站| 日韩一区二区在线视频| 精品一区二区三区四区在线| 日本亚洲精品在线观看| 久久精品99国产精品酒店日本| 欧美激情精品久久久久久黑人| 亚洲xxxx做受欧美| 亚洲天堂男人天堂| 中文字幕欧美精品日韩中文字幕| 高清欧美电影在线| 久久综合免费视频| 欧美日韩亚洲一区二区三区| 成人免费福利在线| 欧美另类高清videos| 欧美国产日本高清在线| 国产视频丨精品|在线观看| 国产亚洲精品一区二区| 欧美黑人巨大精品一区二区| 久久久久国产一区二区三区| 日韩在线免费视频观看| 在线亚洲午夜片av大片| 欧美老女人www| 国产精品96久久久久久又黄又硬| 97精品国产97久久久久久春色| 啪一啪鲁一鲁2019在线视频| 日韩中文字幕视频| 久久久之久亚州精品露出| 这里只有精品在线播放| 成人午夜激情免费视频| 久久精品国产亚洲一区二区| 国产精品私拍pans大尺度在线| 久久久女人电视剧免费播放下载| 成人精品福利视频| 欧美精品videofree1080p| 国产福利视频一区| 精品美女久久久久久免费| 亚洲日韩中文字幕在线播放| 亚洲激情小视频| 日韩av网址在线| 国产男人精品视频| 日韩av网站电影| 日韩欧美在线观看| 中文字幕自拍vr一区二区三区| 91爱爱小视频k| 136fldh精品导航福利| 欧美日韩国产综合视频在线观看中文| 国产69精品久久久久9| 亚洲a中文字幕| 国产精品高潮粉嫩av| 国产香蕉精品视频一区二区三区| 日韩欧美极品在线观看| 不用播放器成人网| 成人亚洲综合色就1024| 中文字幕在线看视频国产欧美在线看完整| 国产亚洲免费的视频看| 在线播放日韩专区| 亚洲激情电影中文字幕| 社区色欧美激情 | 国产成人精品999| 亚洲女人被黑人巨大进入| 欧美日韩另类视频| 日韩精品免费观看| 欧美日韩国产精品一区二区不卡中文| 国产精欧美一区二区三区| 日韩大陆欧美高清视频区| 久久伊人精品天天| 欧美成人亚洲成人| 92福利视频午夜1000合集在线观看| 日韩国产一区三区| 日本中文字幕成人| 国产精品女人网站| 亚洲天堂一区二区三区| 欧美午夜精品久久久久久久| 国产精品久久久91| 日韩美女视频在线观看| 亚洲国产精品va在线| 欧美影院在线播放| 欧美日韩国产成人高清视频| 国产精品第8页| 久久精品中文字幕免费mv| 欧美亚洲激情视频| 欧美一区三区三区高中清蜜桃| 欧美在线视频免费| 色婷婷综合久久久久中文字幕1| 国产成人精品在线| 97在线视频国产| 深夜福利亚洲导航| 欧美激情欧美激情在线五月| 国产精品r级在线| 亚洲第一色中文字幕| 欧美极品欧美精品欧美视频| 伊人伊成久久人综合网小说| 日韩av最新在线| 国产精品青青在线观看爽香蕉| 亚洲欧美中文日韩在线| 国产精品激情av在线播放| 久久五月天综合| 亚洲日本中文字幕免费在线不卡| 欧美一级淫片丝袜脚交| 91免费视频国产| 日韩一区二区精品视频| 成人av资源在线播放| 国产综合香蕉五月婷在线| 亚洲欧洲xxxx| 国产精品丝袜久久久久久高清| 2018中文字幕一区二区三区| 久久久这里只有精品视频| 欧美日韩加勒比精品一区| 国产精品69久久久久| 亚洲午夜未删减在线观看| 国产精品99久久久久久久久| 国产成人激情视频| 亚洲新声在线观看| 福利一区视频在线观看| 国产精品视频久| 日韩av快播网址| 久久中文字幕在线| 国产精品美女在线观看| 中文字幕无线精品亚洲乱码一区| 69影院欧美专区视频| 亚洲bt欧美bt日本bt| 日韩激情av在线播放| 成人亚洲欧美一区二区三区| 亚洲精品一区二三区不卡| 欧美精品激情视频| 日韩在线视频网站| 精品国产31久久久久久| 久久久久日韩精品久久久男男| 在线精品视频视频中文字幕| 精品国产欧美一区二区五十路| 亚洲天堂免费在线| 97精品国产97久久久久久| 九九热99久久久国产盗摄| 97婷婷涩涩精品一区| 91久久国产综合久久91精品网站| 国产欧美欧洲在线观看| 欧美夜福利tv在线| 亚洲成在人线av| 国产一区二中文字幕在线看| 欧美成人免费网| 精品久久久国产| 午夜精品一区二区三区在线| 不卡在线观看电视剧完整版| 欧美一级淫片丝袜脚交| 亚洲国产精品热久久| 日韩av三级在线观看| 日韩av一区二区在线观看| 中文字幕亚洲综合久久筱田步美| 91在线观看欧美日韩| 精品毛片网大全| 日韩欧美亚洲综合| 久久精品中文字幕一区| 97人人做人人爱| 亚洲色在线视频| 欧美福利视频在线观看| 456国产精品| 国产xxx69麻豆国语对白| 欧美在线一区二区视频| 亚洲香蕉成视频在线观看| 亚洲xxxx妇黄裸体| www高清在线视频日韩欧美| 欧美老少做受xxxx高潮| 国产精品美女久久久久av超清| 欧美性受xxxx白人性爽|