成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用原生js實(shí)現(xiàn)輪播圖效果

wanghui / 2405人閱讀

摘要:知乎原文我的博客微信公眾號(hào)這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。

知乎原文 我的博客 微信公眾號(hào)
這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生js寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。
這是我發(fā)布在github上的最后實(shí)現(xiàn)的效果:https://heternally.github.io/...

下面我簡(jiǎn)單跟大家說(shuō)一下我實(shí)現(xiàn)該效果的過(guò)程,如果有什么錯(cuò)誤的地方,歡迎大家說(shuō)出來(lái),以方便大家互相學(xué)習(xí)。

我相信前面簡(jiǎn)單的html+css大家應(yīng)該都會(huì),我這里就不說(shuō)了,簡(jiǎn)單給大家展示一下代碼:

HTML部分

css部分

* {
  margin:0;
  padding:0;
}
#wrap {
  position:relative;
  margin:20px auto;
  width:1226px;
  height:460px;
}
#wrap .banner {
  position:absolute;
  top:0;
  width:100%;
  height:100%;
  opacity:0;
  transition: opacity 2s;
}
#wrap .tab{
  position:absolute;
  bottom:10px;
  right:10px;
}
    #wrap .tab span{
      display: inline-block;
      width:6px;
      height:6px;
      margin:3px;
      background:rgba(105,105,105,0.5);
      border-radius:50%;
      cursor: pointer;
      border:2px solid #887B6E;
    }
    #wrap .tab span.on{
      background:#E2CEB7;
    }
    #wrap .tab span:hover{
      background:#E2CEB7;
    }
#wrap .prev {
  position:absolute;
  left:20px;
  top:210px;
  width:41px;
  height:69px;
  background: url("images/icon-slides.png") 82px;
  cursor:pointer;
}
#wrap .prev:hover{
  background: url("images/icon-slides.png");
} 
#wrap .next {
  position:absolute;
  right:20px;
  top:210px;
  width:41px;
  height:69px;
  background: url("images/icon-slides.png") 41px;
  cursor:pointer;
}
#wrap .next:hover{
  background: url("images/icon-slides.png") 123px;
}

上面的代碼都很簡(jiǎn)單,稍微看看就可以了,下面開(kāi)始重點(diǎn)說(shuō)下js部分

首先我先獲取各個(gè)節(jié)點(diǎn),通過(guò)類(lèi)名,ID等方法:

var oBody = document.getElementsByTagName("body")[0];
var aBanner = document.getElementsByClassName("banner");
var aSpan = document.getElementsByClassName("tab") [0].getElementsByTagName("span");
var oNext = document.getElementsByClassName("next")[0];
var Oprev = document.getElementsByClassName("prev")[0];
var Oon = document.getElementsByClassName("on")[0];

接下來(lái)是初始化界面,因?yàn)槲以赾ss里面設(shè)置了圖片的不透明度opacity:0;所以我在實(shí)現(xiàn)輪播圖前先使得第一張圖片顯示和第一個(gè)小圓點(diǎn)顏色為白色:

aBanner[0].style.opacity = "1";
aSpan[0].className = "on";
var num = 0;

然后就是設(shè)置前一張,后一張,小圓點(diǎn)的按鈕效果了,實(shí)現(xiàn)點(diǎn)擊小圓點(diǎn),會(huì)使相對(duì)應(yīng)的圖片顯示,點(diǎn)擊前一張,會(huì)使前一張圖片顯示;后一張效果一樣:

for(var i = 0;i < aSpan.length;i++){
aSpan[i].index = i;
aSpan[i].onclick = function(){  //點(diǎn)擊小圓點(diǎn)圖片相對(duì)應(yīng)的進(jìn)行切換
for(var j = 0 ;j < aSpan.length; j++){
  num = this.index;
  aSpan[j].className = "";
  aBanner[j].style.opacity = "0";
}
aSpan[num].className = "on";
aBanner[num].style.opacity = "1";
}
oNext.onclick = function(){//按下圖片切換到后一張
  for(var j = 0 ;j < aSpan.length; j++){
  if(aSpan[j].className == "on"){
      aSpan[j].className = "";
      aBanner[j].style.opacity = "0";
      j++;
      num++;
      if(j > 4){
      j = 0;
  }
      aSpan[j].className = "on";
aBanner[j].style.opacity = "1";

  }
}
}

  Oprev.onclick = function(){  //按下圖片切換到前一張
  for(var j = 0 ;j < aSpan.length; j++){
      if(aSpan[j].className == "on"){
          aSpan[j].className = "";
          aBanner[j].style.opacity = "0";
          j--;
          num--;
          if(j < 0){
          j = 4;
      }
          aSpan[j].className = "on";
  aBanner[j].style.opacity = "1";

  }
}
}  
}

在這部分給一個(gè)for循環(huán),length為小圓點(diǎn)的個(gè)數(shù),在這個(gè)循環(huán)中,先給每個(gè)圓點(diǎn)的下標(biāo)值賦值,使得每個(gè)圓點(diǎn)對(duì)應(yīng)一張圖片;

然后編寫(xiě)點(diǎn)擊圓點(diǎn)的函數(shù),在函數(shù)中實(shí)現(xiàn)當(dāng)前圓點(diǎn)的時(shí)候,獲取當(dāng)前的下標(biāo)值,講該值賦給全局變量num,將所以圖片的opacity設(shè)置為o,去掉所有圓點(diǎn)的"on"樣式,然后將第num張圖片的opacity設(shè)置為1,添加"on"樣式,這樣就實(shí)現(xiàn)了點(diǎn)擊圓點(diǎn)跳轉(zhuǎn)到相應(yīng)的圖片。

同樣的就可以實(shí)現(xiàn)向前向后按鈕效果.

最后設(shè)置一個(gè)定時(shí)器的函數(shù),實(shí)現(xiàn)圖片輪播:

function Time(){/*設(shè)置定時(shí)器運(yùn)行的函數(shù)*/
num++;
if(num < 5){
    for(var j = 0 ;j < aSpan.length; j++){
    aSpan[j].className = "";
    aBanner[j].style.opacity = "0";
}
aSpan[num].className = "on";
aBanner[num].style.opacity = "1";
}else {
    num = -1;
}         
}
clearInterval(timer);
var timer = setInterval("Time()",2000);/*調(diào)用定時(shí)器*/

oBody.onmouseover = function(){/*鼠標(biāo)引入,清除定時(shí)器,輪播圖停止*/
    clearInterval(timer);
};
oBody.onmouseout = function(){/*鼠標(biāo)移出,重新調(diào)用定時(shí)器,輪播圖開(kāi)始*/
    clearInterval(timer);
     timer = setInterval("Time()",2000);
};

在調(diào)用定時(shí)器的時(shí)候,我用的使setInterval,或者你要使用setTimerout也是可以的;

在調(diào)用定時(shí)器要先清除定時(shí)器,不然會(huì)讓定時(shí)器一直疊加,使得輪播速度越來(lái)越快;我還加了當(dāng)鼠標(biāo)移入的時(shí)候,輪播圖停止,即定時(shí)器被清除了,當(dāng)鼠標(biāo)移出的時(shí)候,定時(shí)器又重新被調(diào)用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/112379.html

相關(guān)文章

  • 使用原生js實(shí)現(xiàn)播圖效果

    摘要:知乎原文我的博客微信公眾號(hào)這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號(hào)這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生js寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。這是我發(fā)布在github上的最后實(shí)現(xiàn)的效果:https://heternally.gith...

    happen 評(píng)論0 收藏0
  • 使用原生js實(shí)現(xiàn)播圖效果

    摘要:知乎原文我的博客微信公眾號(hào)這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號(hào)這幾天在逛網(wǎng)站的時(shí)候,發(fā)現(xiàn)很多網(wǎng)站都有輪播圖這個(gè)效果,所以我就仿照小米的官網(wǎng)用原生js寫(xiě)了一個(gè)輪播圖效果,希望大家喜歡。這是我發(fā)布在github上的最后實(shí)現(xiàn)的效果:https://heternally.gith...

    Anshiii 評(píng)論0 收藏0
  • 原生 js 實(shí)現(xiàn)移動(dòng)端 Touch 播圖

    摘要:輪播圖輪播圖其實(shí)就是通過(guò)手指的滑動(dòng),來(lái)左右切換輪播圖,下面我們通過(guò)一個(gè)案例,來(lái)實(shí)現(xiàn)下。結(jié)構(gòu)結(jié)構(gòu)上,還是用來(lái)存放輪播圖片,來(lái)存放輪播小圓點(diǎn)樣式初始化的一些標(biāo)簽,都會(huì)有一些默認(rèn)樣式,比如標(biāo)簽?zāi)J(rèn)是有一個(gè)邊距的,為了不影響美觀,我們需要清除掉。 showImg(https://segmentfault.com/img/remote/1460000017719408?w=1920&h=1080...

    Elle 評(píng)論0 收藏0
  • 手把手教你用原生JavaScript造輪子(2)——播圖(更新:ES6版本)

    摘要:綁定輪播事件然后是鼠標(biāo)移入移出事件的綁定鼠標(biāo)移入移出事件移入時(shí)停止輪播播放的定時(shí)器,移出后自動(dòng)開(kāi)始下一張的播放。 通過(guò)上一篇文章的學(xué)習(xí),我們基本掌握了一個(gè)輪子的封裝和開(kāi)發(fā)流程。那么這次將帶大家開(kāi)發(fā)一個(gè)更有難度的項(xiàng)目——輪播圖,希望能進(jìn)一步加深大家對(duì)于面向?qū)ο蟛寮_(kāi)發(fā)的理解和認(rèn)識(shí)。 So, Lets begin! 目前項(xiàng)目使用 ES5及UMD 規(guī)范封裝,所以在前端暫時(shí)只支持標(biāo)簽的引入方式...

    jasperyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<