2020-03-13

Swiper簡(jiǎn)介

Swiper是純javascript打造的滑動(dòng)特效插件遣耍,面向手機(jī)亲桦、平板電腦等移動(dòng)終端。Swiper能實(shí)現(xiàn)觸屏焦點(diǎn)圖焰雕、觸屏Tab切換衷笋、觸屏多圖切換等常用效果。

1矩屁、Swiper初始化

swiper的使用非常簡(jiǎn)單辟宗,能夠快速實(shí)現(xiàn)輪播、滾動(dòng)等效果吝秕。首先需要引入對(duì)應(yīng)的css泊脐、js文件,現(xiàn)在最新Swiper初始化5.0郭膛,繼承了非常多的功能晨抡。
通過(guò)new Swiper()初始化一個(gè)Swiper,返回初始化后的Swiper實(shí)例则剃。

外層.swiperContainer是Swiper容器的css選擇器耘柱,是不可少的。swiper-slide是每個(gè)項(xiàng)棍现。

<div class="swiper-container">
  <div class="swiper-wrapper">
    <div class="swiper-slide">slider1</div>
    <div class="swiper-slide">slider2</div>
    <div class="swiper-slide">slider3</div>
  </div>
</div>
<script>
var mySwiper = new Swiper('.swiper-container', {
    autoplay: true,//可選選項(xiàng)调煎,自動(dòng)滑動(dòng)
})

//如果你初始化時(shí)沒(méi)有定義Swiper實(shí)例,后面也可以通過(guò)Swiper的HTML元素來(lái)獲取該實(shí)例
new Swiper('.swiper-container')
var mySwiper = document.querySelector('.swiper-container').swiper
mySwiper.slideNext();
</script>

上面就是一個(gè)簡(jiǎn)單的左右滑動(dòng)效果示例己肮。
Tips:開(kāi)啟loop循環(huán)滾動(dòng)后士袄,會(huì)通過(guò)js動(dòng)態(tài)創(chuàng)建兩個(gè)重要的class類(lèi),.swiper-slide-prev,.swiper-slide-next,是當(dāng)前激活swiper-slide-active的上一個(gè)和下一個(gè)元素谎僻,也是通過(guò)這三個(gè)類(lèi)的控制鸣剪,來(lái)實(shí)現(xiàn)banner切換的晴氨。

2蝗岖、Swiper觸發(fā)條件常用參數(shù)

1初狰、allowTouchMove
允許觸摸滑動(dòng)。設(shè)為false時(shí),slide無(wú)法滑動(dòng)挎挖,只能使用擴(kuò)展API函數(shù)例如slideNext() 或slidePrev()或slideTo()等改變slides滑動(dòng)这敬。
比如我們?cè)赑C時(shí),要通過(guò)點(diǎn)擊事件實(shí)現(xiàn)banner滑動(dòng)效果蕉朵,移動(dòng)端通過(guò)滑動(dòng)崔涂,就要通過(guò)該屬性來(lái)控制
2、followFinger
跟隨手指始衅。如設(shè)置為false冷蚂,手指滑動(dòng)時(shí)slide不會(huì)動(dòng),當(dāng)你釋放時(shí)slide才會(huì)切換觅闽。
3帝雇、touchAngle
允許觸發(fā)拖動(dòng)的角度值涮俄。默認(rèn)45度蛉拙,即使觸摸方向不是完全水平也能拖動(dòng)slide。

image

4彻亲、touchEventsTarget設(shè)置接受touch事件的目標(biāo)
5孕锄、autoplay
設(shè)置為true啟動(dòng)自動(dòng)切換,并使用默認(rèn)的切換設(shè)置苞尝,默認(rèn)停留三秒畸肆。
6、effect
slide的切換效果宙址,默認(rèn)為"slide"(位移切換)轴脐,可設(shè)置為'slide'(普通切換、默認(rèn)),"fade"(淡入)"cube"(方塊)"coverflow"(3d流)"flip"(3d翻轉(zhuǎn))抡砂。
7大咱、mousewheel、keyboard
可開(kāi)啟通過(guò)鼠標(biāo)注益、鍵盤(pán)來(lái)控制Swiper切換碴巾。
8、Lazy Loading
延遲加載丑搔,圖片延遲加載:需要將圖片img標(biāo)簽的src改寫(xiě)成data-src厦瓢,并且增加類(lèi)名swiper-lazy。
還可以加一個(gè)預(yù)加載啤月,<div class="swiper-lazy-preloader"></div>.

  <!-- 延遲加載圖片的結(jié)構(gòu) -->
<div class="swiper-slide">
    <img data-src="path/to/picture-1.jpg" class="swiper-lazy">
    <div class="swiper-lazy-preloader"></div>
</div>

var mySwiper = new Swiper('.swiper-container', {
  lazy: {
    loadPrevNext: true,
    },
})

3煮仇、Swiper Touches事件函數(shù)

1、touchStart(event)谎仲、touchMove(event)浙垫、touchEnd(event)
類(lèi)似于移動(dòng)端touch事件,可監(jiān)聽(tīng)事件進(jìn)行操作强重。

2绞呈、slideChange贸人、sliderMove
slideChange事件函數(shù),在當(dāng)前Slide切換到另一個(gè)Slide時(shí)執(zhí)行(activeIndex發(fā)生改變)佃声,一般是在點(diǎn)擊控制組件艺智、釋放滑動(dòng)的時(shí)間點(diǎn)。
sliderMove手指觸碰Swiper并拖動(dòng)slide的過(guò)程中不斷觸發(fā)sliderMove函數(shù)圾亏。接受touchmove事件作為參數(shù)十拣。
3、click(event)
觸發(fā)時(shí)機(jī)
如果沒(méi)有觸發(fā)touchMove()志鹃,則釋放觸摸/鼠標(biāo)時(shí):
(1).立即執(zhí)行tap()
(2).如果觸摸/鼠標(biāo)按壓時(shí)間小于300ms夭问,并且兩次觸摸/點(diǎn)擊間隔大于300ms,延遲300ms執(zhí)行onClick
(3).如果觸摸/鼠標(biāo)按壓時(shí)間小于300ms曹铃,并且兩次觸摸/點(diǎn)擊間隔小于300ms缰趋,立即執(zhí)行doubleTap

3、tap(event)
回調(diào)函數(shù)陕见,當(dāng)你輕觸(tap)Swiper后執(zhí)行秘血。在移動(dòng)端,click會(huì)有 200~300 ms延遲评甜,所以請(qǐng)用tap代替click作為點(diǎn)擊事件灰粮。
接受touchend事件作為參數(shù)。
4忍坷、resize當(dāng)瀏覽器尺寸發(fā)生變化時(shí)執(zhí)行
如:

var mySwiper = new Swiper('.swiper-container',{
  on: {
    resize: function(){
      //窗口變化了
    }, 
  },
})

4粘舟、總結(jié)

在實(shí)際的web開(kāi)發(fā)中,總是需要兼容PC跟移動(dòng)端佩研,如果使用原生js自己寫(xiě)的話柑肴,不僅耗時(shí),可能兼容性韧骗、穩(wěn)定性也不好嘉抒,特別是移動(dòng)端的touch觸控事件。使用swiper便不用考慮到兼容這些事袍暴,只要熟悉它的API些侍,便可快速實(shí)現(xiàn)手機(jī),電腦網(wǎng)頁(yè)大部分滑動(dòng)政模,焦點(diǎn)圖岗宣、tab、觸摸導(dǎo)航等功能
舉個(gè)例子:
部分瀏覽器左右滑動(dòng)翻頁(yè)與頁(yè)面中左右滑動(dòng)監(jiān)聽(tīng)沖突淋样,導(dǎo)致我們要左右滑動(dòng)效果無(wú)法實(shí)現(xiàn)耗式。

$('.slideshowBox').each(function(index, el) {
    el.addEventListener('touchmove', function (event) {
        event.preventDefault();
    }, false);
});

slideshowBox是你需要手動(dòng)滑動(dòng)的父類(lèi),禁止當(dāng)前區(qū)域的瀏覽器默認(rèn)事件不會(huì)影響瀏覽器的左右滑動(dòng)前進(jìn)后退功能。

雖然swiper使用很方便刊咳,使得移動(dòng)端效果更流暢完善彪见,但是在具體開(kāi)發(fā)中,有很多細(xì)節(jié)點(diǎn)反而更不好控制娱挨,且swiper默認(rèn)有一些樣式會(huì)對(duì)我們要的效果造成影響余指,比如.swiper-container{overflow:hidden;},會(huì)使swipe選項(xiàng)卡被隱藏一部分跷坝。需要熟悉其文檔酵镜,關(guān)于class類(lèi)、事件等觸發(fā)柴钻,才能靈活地控制實(shí)現(xiàn)效果淮韭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贴届,隨后出現(xiàn)的幾起案子靠粪,更是在濱河造成了極大的恐慌,老刑警劉巖粱腻,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庇配,死亡現(xiàn)場(chǎng)離奇詭異斩跌,居然都是意外死亡绍些,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)耀鸦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柬批,“玉大人,你說(shuō)我怎么就攤上這事袖订〉剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵洛姑,是天一觀的道長(zhǎng)上沐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)楞艾,這世上最難降的妖魔是什么参咙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮硫眯,結(jié)果婚禮上蕴侧,老公的妹妹穿的比我還像新娘。我一直安慰自己两入,他們只是感情好净宵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般择葡。 火紅的嫁衣襯著肌膚如雪紧武。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天敏储,我揣著相機(jī)與錄音脏里,去河邊找鬼。 笑死虹曙,一個(gè)胖子當(dāng)著我的面吹牛迫横,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酝碳,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矾踱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了疏哗?” 一聲冷哼從身側(cè)響起呛讲,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎返奉,沒(méi)想到半個(gè)月后贝搁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芽偏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年雷逆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片污尉。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膀哲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出被碗,到底是詐尸還是另有隱情某宪,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布锐朴,位于F島的核電站兴喂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏焚志。R本人自食惡果不足惜衣迷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娩嚼。 院中可真熱鬧蘑险,春花似錦、人聲如沸岳悟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至呵俏,卻和暖如春堆缘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背普碎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工吼肥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人麻车。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓缀皱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親动猬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啤斗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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