進(jìn)階17 輪播的實現(xiàn)

1: 輪播的實現(xiàn)原理是怎樣的?如果讓你來實現(xiàn),你會抽象出哪些函數(shù)(or接口)供使用?(比如 play())

一種左右滾動輪播實現(xiàn)原理:

  1. 最外層可視窗口設(shè)置與圖片寬高相仿,并使用overflow: hidden, 內(nèi)部容器高度與圖片高度相仿,寬度為所有要輪播圖片寬度之和,并且絕對定位,以便通過left值控制左右滾動。
  2. 如果要左右無限滾動,還需要克隆last img放在容器內(nèi)最前面,克隆first img放在容器內(nèi)最后面。這樣當(dāng)輪播到第一張還想pre,或者最后一張還想next時,先展示克隆的img,緊接著通過修改css left值立刻替換為真正的尾張或首張img,由于沒有使用動畫,并且是一樣的圖片,所以肉眼上看不出來變化,但實際上已經(jīng)從臨時展示的克隆img,變?yōu)樵璂OM中的img。

一種漸變輪播實現(xiàn)原理:

  1. 與上面相仿,但要更簡單,內(nèi)部img不需要左右水平排列,只需要全部絕對定位,疊加在一起,然后全部 display: none
  2. js中需要在加載后,就立即執(zhí)行一次輪播函數(shù),來淡入首張img,接下來受按鈕控制,通過淡出當(dāng)前圖片,淡入預(yù)期圖片,來達(dá)到漸變輪播。

關(guān)于抽象函數(shù)or接口:

首先抽象出函數(shù)or接口,是為了讓代碼更有條理,每個函數(shù)控制在20行內(nèi),降低單個函數(shù)的復(fù)雜度,提高代碼復(fù)用性。 由不同的函數(shù)部件,協(xié)同完成。降低了bug排查難度和耦合性。 同時也方便后續(xù)維護(hù),修改,或者新增功能。 這個就是抽象出函數(shù)or接口的意義。

關(guān)于輪播,可以抽象出的接口比如:

  • playNext() 切換到下一張
  • playPre() 切換到上一張
  • setBullet() 設(shè)置狀態(tài)指示符號
  • autoPlay() 自動輪播
  • stopAuto() 停止自動輪播
  • ......

2: 實現(xiàn)左右滾動無限循環(huán)輪播效果

預(yù)覽地址

3:實現(xiàn)一個漸變輪播效果

預(yù)覽地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 題目1: 輪播的實現(xiàn)原理是怎樣的?如果讓你來實現(xiàn),你會抽象出哪些函數(shù)(or接口)供使用?(比如 play())Pa...
    饑人谷_桶飯閱讀 257評論 0 0
  • 題目1: 輪播的實現(xiàn)原理是怎樣的?如果讓你來實現(xiàn),你會抽象出哪些函數(shù)(or接口)供使用?(比如 play()) 左...
    cctosuper閱讀 263評論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,241評論 4 61
  • 這是交上畢業(yè)論文二稿的第二天,仍然是沒有緩過勁來,像是幾天之內(nèi)枯死了一片腦細(xì)胞,吃了再多飯也跟不上身體的虧空。...
    小芮兒閱讀 531評論 4 2
  • 雖然在家做飯很衛(wèi)生省錢,但是有沒有覺得兩個人炒一個菜太單調(diào),做兩個菜又吃不完? 不用擔(dān)心,今天教你們用最少的材料,...
    經(jīng)融南安閱讀 337評論 0 0