摘要:結(jié)構(gòu)毫無美感的,畢竟就一個(gè)嘛上一張下一張代碼使用定時(shí)器定時(shí)切換圖片輪播效果鼠標(biāo)停留在圖片上時(shí)停止切換圖片,離開后繼續(xù)切換圖片圖片點(diǎn)擊上一張下一張時(shí)自動(dòng)切換,并自我進(jìn)行判斷是否為第一張或最后一張。
這年頭,哪個(gè)app,哪個(gè)小程序沒個(gè)輪播圖呢,并且鴨,哪個(gè)ui框架不給你提供呢是吧。
但是懂寫原生輪播圖是不是也很裝逼呀嘻嘻。so,我們還是先得理解輪播圖的技術(shù)要點(diǎn)是什么吧
1. 使用定時(shí)器定時(shí)切換圖片輪播效果
2. 鼠標(biāo)停留在圖片上時(shí)停止切換圖片,離開后繼續(xù)切換圖片
3. 圖片點(diǎn)擊上一張下一張時(shí)自動(dòng)切換,并自我進(jìn)行判斷是否為第一張或最后一張。
當(dāng)圖片為第一張時(shí),點(diǎn)擊上一張到最后一張圖片,當(dāng)圖片為最后一張時(shí),點(diǎn)擊下一張到第一張。
HTML結(jié)構(gòu)(毫無美感的html,畢竟就一個(gè)demo嘛)
上一張下一張
JavaScript代碼
/* * 1.使用定時(shí)器定時(shí)切換圖片輪播效果 * 2.鼠標(biāo)停留在圖片上時(shí)停止切換圖片,離開后繼續(xù)切換圖片 * 3.圖片點(diǎn)擊上一張下一張時(shí)自動(dòng)切換,并自我進(jìn)行判斷是否為第一張或最后一張。 * 當(dāng)圖片為第一張時(shí),點(diǎn)擊上一張到最后一張圖片,當(dāng)圖片為最后一張時(shí),點(diǎn)擊下一張到第一張。 * * onmouseover 事件會(huì)在鼠標(biāo)指針移動(dòng)到指定的對(duì)象上時(shí)發(fā)生。 * onmouseout 事件會(huì)在鼠標(biāo)指針移出指定的對(duì)象時(shí)發(fā)生。 * */ // 將所有圖片url放入一個(gè)數(shù)組,將index的值設(shè)置為0 var imgs = ["img/1.jpg", "img/2.jpg", "img/3.jpg"]; var index = 0; var stopValue = 0; var startValue = 0; var img = document.getElementsByTagName("img")[0]; // 獲取img的dom function carousel() { // 切換圖片 if (index < imgs.length-1) { index++; img.setAttribute("src", imgs[index]); } else{ index = 0; img.setAttribute("src", imgs[index]); } } /* * 定義兩個(gè)全局變量stopValue 和startValue 為0, * onmouseover和onmouseout從進(jìn)入對(duì)應(yīng)的元素范圍到離開對(duì)應(yīng)的元素范圍會(huì)執(zhí)行很多次, * 通過兩個(gè)全局全局變量,讓它不管在對(duì)應(yīng)的元素范圍內(nèi)如何移動(dòng)都只執(zhí)行一次, * 避免setInterval時(shí)間出錯(cuò)。 * */ function stop(){ // 進(jìn)入圖片時(shí)停止輪播 stopValue+=1; if (stopValue < 2) { clear(); startValue = 0; } } function start(){ // 離開圖片時(shí)繼續(xù)輪播 startValue+=1; if (startValue < 2) { setInt(); stopValue = 0; } } function clear(){ // 清除定時(shí)器 clearInterval(int); } function setInt(){ // 重新執(zhí)行定時(shí)器 int = setInterval("carousel()", 3000); } /* * 在切換圖片時(shí)也調(diào)用了shop()和start()方法 * 目的時(shí)為了解除在輪播過程中,在即將切換圖片時(shí),手動(dòng)切換圖片了卻又立馬進(jìn)入到下一張圖片 * */ function left(){ // 上一張切換圖片 stop(); if (index > 0) { index -= 1; img.setAttribute("src", imgs[index]); } else{ index = imgs.length-1; img.setAttribute("src", imgs[index]); } start(); } function right(){ // 下一張切換圖片 stop(); if (index < imgs.length-1) { index +=1; img.setAttribute("src", imgs[index]); } else{ index = 0; img.setAttribute("src", imgs[index]); } start(); } var int = setInterval("carousel()", 3000);
噢對(duì)了,這次滴文章參考了這位大大的文章,嘻嘻該承認(rèn)還是得承認(rèn),誰讓我還是一個(gè)孩子呢
貌似這距離實(shí)用的輪播效果不遠(yuǎn)了呀,但肯定還有很多缺點(diǎn),望大家指出~~~
我滴媽呀,可能加個(gè)css過渡效果可能會(huì)順眼很多,可誰讓我css渣呢,不說了去進(jìn)修先~~~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99976.html
摘要:綁定輪播事件然后是鼠標(biāo)移入移出事件的綁定鼠標(biāo)移入移出事件移入時(shí)停止輪播播放的定時(shí)器,移出后自動(dòng)開始下一張的播放。 通過上一篇文章的學(xué)習(xí),我們基本掌握了一個(gè)輪子的封裝和開發(fā)流程。那么這次將帶大家開發(fā)一個(gè)更有難度的項(xiàng)目——輪播圖,希望能進(jìn)一步加深大家對(duì)于面向?qū)ο蟛寮_發(fā)的理解和認(rèn)識(shí)。 So, Lets begin! 目前項(xiàng)目使用 ES5及UMD 規(guī)范封裝,所以在前端暫時(shí)只支持標(biāo)簽的引入方式...
摘要:站在這個(gè)時(shí)間點(diǎn)上,我對(duì)自己之前三次失敗的面試經(jīng)歷做了一次深度回顧。關(guān)于我第三次面試失敗的經(jīng)歷,依然是與輪播圖有關(guān)。當(dāng)然,這次思特奇面試之旅,最后也是以失敗告終,這也是我離進(jìn)大廠最近的一次。 showImg(https://segmentfault.com/img/bVYQuP?w=528&h=513); 前言 時(shí)間的齒輪已經(jīng)來到了2017年的11月份,距離2018年僅僅還剩下不到兩...
摘要:站在這個(gè)時(shí)間點(diǎn)上,我對(duì)自己之前三次失敗的面試經(jīng)歷做了一次深度回顧。關(guān)于我第三次面試失敗的經(jīng)歷,依然是與輪播圖有關(guān)。當(dāng)然,這次思特奇面試之旅,最后也是以失敗告終,這也是我離進(jìn)大廠最近的一次。 showImg(https://segmentfault.com/img/bVYQuP?w=528&h=513); 前言 時(shí)間的齒輪已經(jīng)來到了2017年的11月份,距離2018年僅僅還剩下不到兩...
摘要:鼠標(biāo)放到輪播圖的圖片上時(shí)不再自動(dòng)輪播并且左右箭頭顯示出來,鼠標(biāo)移開時(shí)左右箭頭隱藏掉并且自動(dòng)輪播。核心原理清除定時(shí)器,綁定事件,重構(gòu)下代碼封裝出往右往左輪播函數(shù)和自動(dòng)輪播函數(shù)。 需求與分析 需求:循環(huán)無縫自動(dòng)輪播五張圖,按左右箭頭可以手動(dòng)切換圖片,鼠標(biāo)點(diǎn)擊輪播圖下面按鈕 1 2 3 4 5會(huì)跳轉(zhuǎn)到對(duì)應(yīng)的第1 2 3 4 5張圖片。鼠標(biāo)放到輪播圖的圖片上時(shí)不再自動(dòng)輪播并且左右箭頭顯示出來,...
閱讀 2629·2021-11-18 10:02
閱讀 2286·2021-09-30 09:47
閱讀 1799·2021-09-27 14:01
閱讀 3116·2021-08-16 11:00
閱讀 3169·2019-08-30 11:06
閱讀 2400·2019-08-29 17:29
閱讀 1541·2019-08-29 13:19
閱讀 451·2019-08-26 13:54