摘要:知乎原文我的博客微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生寫了一個輪播圖效果,希望大家喜歡。
知乎原文 我的博客 微信公眾號
這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生js寫了一個輪播圖效果,希望大家喜歡。
這是我發布在github上的最后實現的效果:https://heternally.github.io/...
下面我簡單跟大家說一下我實現該效果的過程,如果有什么錯誤的地方,歡迎大家說出來,以方便大家互相學習。
我相信前面簡單的html+css大家應該都會,我這里就不說了,簡單給大家展示一下代碼:
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; }
上面的代碼都很簡單,稍微看看就可以了,下面開始重點說下js部分
首先我先獲取各個節點,通過類名,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];
接下來是初始化界面,因為我在css里面設置了圖片的不透明度opacity:0;所以我在實現輪播圖前先使得第一張圖片顯示和第一個小圓點顏色為白色:
aBanner[0].style.opacity = "1"; aSpan[0].className = "on"; var num = 0;
然后就是設置前一張,后一張,小圓點的按鈕效果了,實現點擊小圓點,會使相對應的圖片顯示,點擊前一張,會使前一張圖片顯示;后一張效果一樣:
for(var i = 0;i < aSpan.length;i++){ aSpan[i].index = i; aSpan[i].onclick = function(){ //點擊小圓點圖片相對應的進行切換 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"; } } } }
在這部分給一個for循環,length為小圓點的個數,在這個循環中,先給每個圓點的下標值賦值,使得每個圓點對應一張圖片;
然后編寫點擊圓點的函數,在函數中實現當前圓點的時候,獲取當前的下標值,講該值賦給全局變量num,將所以圖片的opacity設置為o,去掉所有圓點的"on"樣式,然后將第num張圖片的opacity設置為1,添加"on"樣式,這樣就實現了點擊圓點跳轉到相應的圖片。
同樣的就可以實現向前向后按鈕效果.
最后設置一個定時器的函數,實現圖片輪播:
function Time(){/*設置定時器運行的函數*/ 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);/*調用定時器*/ oBody.onmouseover = function(){/*鼠標引入,清除定時器,輪播圖停止*/ clearInterval(timer); }; oBody.onmouseout = function(){/*鼠標移出,重新調用定時器,輪播圖開始*/ clearInterval(timer); timer = setInterval("Time()",2000); };
在調用定時器的時候,我用的使setInterval,或者你要使用setTimerout也是可以的;
在調用定時器要先清除定時器,不然會讓定時器一直疊加,使得輪播速度越來越快;我還加了當鼠標移入的時候,輪播圖停止,即定時器被清除了,當鼠標移出的時候,定時器又重新被調用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/54404.html
摘要:知乎原文我的博客微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生寫了一個輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生js寫了一個輪播圖效果,希望大家喜歡。這是我發布在github上的最后實現的效果:https://heternally.gith...
摘要:知乎原文我的博客微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生寫了一個輪播圖效果,希望大家喜歡。 知乎原文 我的博客 微信公眾號這幾天在逛網站的時候,發現很多網站都有輪播圖這個效果,所以我就仿照小米的官網用原生js寫了一個輪播圖效果,希望大家喜歡。這是我發布在github上的最后實現的效果:https://heternally.gith...
摘要:輪播圖輪播圖其實就是通過手指的滑動,來左右切換輪播圖,下面我們通過一個案例,來實現下。結構結構上,還是用來存放輪播圖片,來存放輪播小圓點樣式初始化的一些標簽,都會有一些默認樣式,比如標簽默認是有一個邊距的,為了不影響美觀,我們需要清除掉。 showImg(https://segmentfault.com/img/remote/1460000017719408?w=1920&h=1080...
摘要:綁定輪播事件然后是鼠標移入移出事件的綁定鼠標移入移出事件移入時停止輪播播放的定時器,移出后自動開始下一張的播放。 通過上一篇文章的學習,我們基本掌握了一個輪子的封裝和開發流程。那么這次將帶大家開發一個更有難度的項目——輪播圖,希望能進一步加深大家對于面向對象插件開發的理解和認識。 So, Lets begin! 目前項目使用 ES5及UMD 規范封裝,所以在前端暫時只支持標簽的引入方式...
閱讀 1675·2021-11-15 11:37
閱讀 3408·2021-09-28 09:44
閱讀 1649·2021-09-07 10:15
閱讀 2784·2021-09-03 10:39
閱讀 2686·2019-08-29 13:20
閱讀 1291·2019-08-29 12:51
閱讀 2204·2019-08-26 13:44
閱讀 2124·2019-08-23 18:02