真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

js如何實(shí)現(xiàn)炫酷的左右輪播圖

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

成都創(chuàng)新互聯(lián)公司專注于湯旺企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。湯旺網(wǎng)站建設(shè)公司,為湯旺等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

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

html代碼




 
 
 Document
 
 
 


 
 
  
  
  
  
                               

主要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; /* 兩個(gè)圖片的寬度 */
 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的標(biāo)號(hào)隱藏掉 */
 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"); //設(shè)置第一個(gè)span增加current樣式

 //布局圖片,第一張?jiān)谡_位置,其余的在右邊
 var scrollWidth = js_slider.clientWidth; //獲取大盒子的寬度,也就是后面動(dòng)畫走的距離
 for(var i=1; i 310px)
  animate(imgs[iNow],{left: scrollWidth});
  iNow = --iNow < 0 ? imgs.length-1 : iNow;
  imgs[iNow].style.left = -scrollWidth + "px";//快速執(zhí)行,即將顯示的一頁(yè)立馬走到左邊,然后顯示
  animate(imgs[iNow],{left:0}); //下一張圖片右移,從-310px->0
  setSquare();
  }else if(this.className == "slider-ctrl-next"){

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

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

緩動(dòng)動(dòng)畫js代碼:(animate.js

//返回當(dāng)前樣式
function getStyle(obj,attr){ //obj對(duì)象,attr屬性名
 if(obj.currentStyle){ //ie等
 return obj.currentStyle[attr];
 }else{ //w3c
 return window.getComputedStyle(obj,null)[attr];
 }
}
 function animate(obj,json,fn) { // 給誰(shuí) json
 clearInterval(obj.timer);
 obj.timer = setInterval(function() {
  var flag = true; // 用來(lái)判斷是否停止定時(shí)器 一定寫到遍歷的外面
  for(var attr in json){ // attr 屬性 json[attr] 值
  //開(kāi)始遍歷 json
  // 計(jì)算步長(zhǎng) 用 target 位置 減去當(dāng)前的位置 除以 10
  // console.log(attr);
  var current = 0;
  if(attr == "opacity")
  {
   current = Math.round(parseInt(getStyle(obj,attr)*100)) || 0; //用戶沒(méi)有定義opacity,則返回undefined
   console.log(current);
  }
  else
  {
   current = parseInt(getStyle(obj,attr)); // 數(shù)值,去除樣式的 “px”
  }
  // console.log(current);
   // 目標(biāo)位置就是 屬性值
  var step = ( json[attr] - current) / 10; // 步長(zhǎng) 用目標(biāo)位置 - 現(xiàn)在的位置 / 10
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  //判斷透明度
  if(attr == "opacity") // 判斷用戶有沒(méi)有輸入 opacity
  {
   if("opacity" in obj.style) // 判斷 我們?yōu)g覽器是否支持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]) // 只要其中一個(gè)不滿足條件 就不應(yīng)該停止定時(shí)器 這句一定遍歷里面
  {
   flag = false;
  }
  }
  if(flag) // 用于判斷定時(shí)器的條件
  {
  clearInterval(obj.timer);
  //alert("ok了");
  if(fn) // 很簡(jiǎn)單 當(dāng)定時(shí)器停止了。 動(dòng)畫就結(jié)束了 如果有回調(diào),就應(yīng)該執(zhí)行回調(diào)
  {
   fn(); // 函數(shù)名 + () 調(diào)用函數(shù) 執(zhí)行函數(shù) 暫且這樣替代
  }
  }
 },30)
 }

看完了這篇文章,相信你對(duì)“js如何實(shí)現(xiàn)炫酷的左右輪播圖”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


新聞標(biāo)題:js如何實(shí)現(xiàn)炫酷的左右輪播圖
轉(zhuǎn)載來(lái)源:http://weahome.cn/article/gedeid.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部