亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js如何實現炫酷的左右輪播圖

發布時間:2021-06-19 09:28:43 來源:億速云 閱讀:216 作者:小新 欄目:web開發

小編給大家分享一下js如何實現炫酷的左右輪播圖,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

本文實例為大家分享了js左右輪播圖的具體代碼,供大家參考,具體內容如下

html代碼

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta keyword="左右輪播圖-效果比較好">
 <title>Document</title>
 <link rel="stylesheet" type="text/css" href="css/css.css">
 <script type="text/javascript" src="js/animate.js"></script>
 <script type="text/javascript" src="js/slider.js"></script>
</head>
<body>
 <div class="w-slider" id="js_slider">
 <div class="slider">
  <div class="slider-main" id="slider_main">
  <div class="slider-main-img"><a href="#"><img src="images/1.jpg" alt=""></a></div>
  <div class="slider-main-img"><a href="#"><img src="images/2.jpg" alt=""></a></div>
  <div class="slider-main-img"><a href="#"><img src="images/3.jpg" alt=""></a></div>
  <div class="slider-main-img"><a href="#"><img src="images/4.jpg" alt=""></a></div>
  <div class="slider-main-img"><a href="#"><img src="images/5.jpg" alt=""></a></div>
  <div class="slider-main-img"><a href="#"><img src="images/6.jpg" alt=""></a></div> 
  </div>
 </div>
 <div class="slider-ctrl" id="slider_ctrl">
  <span class="slider-ctrl-prev"></span>
  <!-- <span class="slider-ctrl-con current"></span>
  <span class="slider-ctrl-con"></span>
  <span class="slider-ctrl-con"></span>
  <span class="slider-ctrl-con"></span>
  <span class="slider-ctrl-con"></span>
  <span class="slider-ctrl-con"></span> -->
  <span class="slider-ctrl-next"></span>
 </div>
 </div>
 <script> 

 </script>
</body>
</html>

主要css代碼:

.w-slider{
 width: 310px;
 height: 265px;
 background-color: pink;
 margin: 100px auto;
 position: relative;
 overflow: hidden;
}
.slider{
 width: 310px;
 height: 220px;
}
.slider-main{
 width: 620px; /* 兩個圖片的寬度 */
 height: 310px;
}
.slider-main img{
 vertical-align: top; /* 消除圖片上下3px的間隙 */
}
.slider-main-img{
 position: absolute;
 top: 0;
 left: 0;
}
.slider-ctrl{
 text-align:center;
 padding-top: 8px;
}
.slider-ctrl-con{
 display: inline-block;
 width: 24px;
 height: 20px;
 background-color: blue;
 margin: 0 5px;
 background: url(../images/icon.png) no-repeat -24px -782px;
 cursor: pointer;
 text-indent: -20em; /* 為了將span的標號隱藏掉 */
 overflow: hidden;
}
.slider-ctrl .current{
 background-position: -24px -762px;
}
.slider-ctrl-prev,.slider-ctrl-next{
 position: absolute;
 top: 50%;
 margin-top: -35px;
 display: inline-block;
 width: 30px;
 height: 35px;
 background: url(../images/icon.png) no-repeat 6px top;
 opacity: 0.8;
 cursor: pointer;
}
.slider-ctrl-prev{
 left: 0;
}
.slider-ctrl-next{
 right: 0;
 background-position: -6px -44px;
}

主要js代碼(slider.js):

window.onload = function(){
 function $(id){ return document.getElementById(id);}
 var js_slider = $("js_slider");
 var slider_main = $("slider_main"); //獲取輪播圖片的父盒子
 var imgs = slider_main.children; //得到圖片組
 var slider_ctrl = $("slider_ctrl"); //獲取控制的 父盒子

 //生成控制輪播的span
 for(var i = 0; i< imgs.length; i++){
 var span = document.createElement("span");
 span.className = "slider-ctrl-con";
 span.innerHTML = imgs.length - i;
 slider_ctrl.insertBefore(span,slider_ctrl.children[1]);
 }
 var spans = slider_ctrl.children;
 spans[1].setAttribute("class","slider-ctrl-con current"); //設置第一個span增加current樣式

 //布局圖片,第一張在正確位置,其余的在右邊
 var scrollWidth = js_slider.clientWidth; //獲取大盒子的寬度,也就是后面動畫走的距離
 for(var i=1; i<imgs.length; i++){ //第一張圖片在正確位置
 imgs[i].style.left = scrollWidth + "px"; //其余圖片在310px的位置
 }

 //遍歷三個按鈕--左、右和下面的span
 var iNow = 0; //設置當前顯示的圖片的索引號
 for(var k in spans){ //k是索引號
 spans[k].onclick = function(){
  if(this.className == "slider-ctrl-prev"){

  //當前圖片右移(從0 -> 310px)
  animate(imgs[iNow],{left: scrollWidth});
  iNow = --iNow < 0 ? imgs.length-1 : iNow;
  imgs[iNow].style.left = -scrollWidth + "px";//快速執行,即將顯示的一頁立馬走到左邊,然后顯示
  animate(imgs[iNow],{left:0}); //下一張圖片右移,從-310px->0
  setSquare();
  }else if(this.className == "slider-ctrl-next"){

  //當前圖片左移(從0 -> -310px)
  animate(imgs[iNow],{left: -scrollWidth});
  iNow = (++iNow) % imgs.length;
  imgs[iNow].style.left = scrollWidth + "px";//快速執行,即將顯示的一頁立馬走到右邊,然后左移顯示
  animate(imgs[iNow],{left:0}); //下一張圖片左移,從310px->0
  setSquare();
  //或者精簡為函數
  /*autoPlay();*/
  }else{
  /*alert("點擊了下面的span");*/
  var clickIndex = this.innerHTML - 1;
  if(clickIndex > iNow){
   //做法等同于右側按鈕
   animate(imgs[iNow],{left: -scrollWidth});
   imgs[clickIndex].style.left = scrollWidth + "px";//快速執行,即將顯示的一頁立馬走到右邊,然后左移顯示
  }else if(clickIndex < iNow){
   //做法等同于左側
   animate(imgs[iNow],{left: scrollWidth});
   imgs[clickIndex].style.left = -scrollWidth + "px";//快速執行,即將顯示的一頁立馬走到左邊,然后顯示
  }
  iNow = clickIndex;
  animate(imgs[iNow],{left:0}); 
  setSquare();
  }
 }
 }
 //控制span小方塊的樣式 函數
 function setSquare(){
 //下面的span樣式清空,將iNow設置為current,注意是下面的span,不包含左右控制按鈕
 for(var i=1; i<spans.length-1; i++){
  spans[i].className = "slider-ctrl-con";
 }
 spans[iNow+1].className = "slider-ctrl-con current"; //注意iNow是索引號,要加1
 }

 //設置定時器 ,和右側按鈕功能一致
 var timer =null;
 timer = setInterval(autoPlay,2000);
 function autoPlay(){
 animate(imgs[iNow],{left: -scrollWidth});
 iNow = (++iNow) % imgs.length;
 imgs[iNow].style.left = scrollWidth + "px";//快速執行,即將顯示的一頁立馬走到右邊,然后左移顯示
 animate(imgs[iNow],{left:0}); //下一張圖片左移,從310px->0
 setSquare();
 }

 //清除定時器
 js_slider.onmouseover = function(){
 clearInterval(timer);
 }
 //開啟定時器
 js_slider.onmouseout = function(){
 clearInterval(timer); //要執行定時器,先清除定時器
 timer = setInterval(autoPlay,2000);
 }
}

緩動動畫js代碼:(animate.js

//返回當前樣式
function getStyle(obj,attr){ //obj對象,attr屬性名
 if(obj.currentStyle){ //ie等
 return obj.currentStyle[attr];
 }else{ //w3c
 return window.getComputedStyle(obj,null)[attr];
 }
}
 function animate(obj,json,fn) { // 給誰 json
 clearInterval(obj.timer);
 obj.timer = setInterval(function() {
  var flag = true; // 用來判斷是否停止定時器 一定寫到遍歷的外面
  for(var attr in json){ // attr 屬性 json[attr] 值
  //開始遍歷 json
  // 計算步長 用 target 位置 減去當前的位置 除以 10
  // console.log(attr);
  var current = 0;
  if(attr == "opacity")
  {
   current = Math.round(parseInt(getStyle(obj,attr)*100)) || 0; //用戶沒有定義opacity,則返回undefined
   console.log(current);
  }
  else
  {
   current = parseInt(getStyle(obj,attr)); // 數值,去除樣式的 “px”
  }
  // console.log(current);
   // 目標位置就是 屬性值
  var step = ( json[attr] - current) / 10; // 步長 用目標位置 - 現在的位置 / 10
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  //判斷透明度
  if(attr == "opacity") // 判斷用戶有沒有輸入 opacity
  {
   if("opacity" in obj.style) // 判斷 我們瀏覽器是否支持opacity
   {
    // obj.style.opacity,//支持opacity-----opacity:0.3
    obj.style.opacity = (current + step) /100; 
   }
   else
   { // obj.style.filter = alpha(opacity = 30)
    obj.style.filter = "alpha(opacity = "+(current + step)* 10+")";

   }
  }
  else if(attr == "zIndex")
  {
   obj.style.zIndex = json[attr];
  }
  else
  {
   obj.style[attr] = current + step + "px" ;
  }

  if(current != json[attr]) // 只要其中一個不滿足條件 就不應該停止定時器 這句一定遍歷里面
  {
   flag = false;
  }
  }
  if(flag) // 用于判斷定時器的條件
  {
  clearInterval(obj.timer);
  //alert("ok了");
  if(fn) // 很簡單 當定時器停止了。 動畫就結束了 如果有回調,就應該執行回調
  {
   fn(); // 函數名 + () 調用函數 執行函數 暫且這樣替代
  }
  }
 },30)
 }

看完了這篇文章,相信你對“js如何實現炫酷的左右輪播圖”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

桦甸市| 肃宁县| 安泽县| 云林县| 永寿县| 兴安县| 长乐市| 巴东县| 鞍山市| 宜阳县| 福清市| 寻乌县| 南宁市| 资源县| 吉隆县| 米泉市| 岳池县| 壶关县| 读书| 长寿区| 弋阳县| 龙南县| 扶余县| 新龙县| 鱼台县| 玉山县| 右玉县| 林芝县| 上林县| 和顺县| 荔浦县| 会泽县| 桓台县| 崇文区| 芦溪县| 翁牛特旗| 抚州市| 深泽县| 潍坊市| 青海省| 黄平县|