Vue滑動翻頁元件swiper的實現 第一版

2021-08-28 13:39:43 字數 1345 閱讀 2113

關於滑動翻頁,有很多優秀的外掛程式可以使用,但是多多少少都有點大,所以自己試著完成乙個元件來實現。(以左右滑動翻頁為例)

1、主要思路

最主要的就是對三個觸控事件的處理:touchstart、touchmove、touchend

在touchstart事件處理程式中記錄一些初始值,比如原始座標;在touchmove事件處理程式中計算實時滑動的距離,讓元素隨之一起偏移;在touchend事件處理程式中計算最終的滑動距離,大於闕值則滑動一整頁,小於則回到起始位置。

2、**實現

頁面結構:具體的元件結構和資料傳遞就不展示了,只列出編譯後的html結構如下:

基本樣式:inline-block用font-size: 0來隱藏間距

​​
初始設定:記錄頁面寬度、.ths_swiper-wrap元素的寬度、滾動的元素.swiper

mounted () ,
滾動元素:這裡需要專門記錄的是,在.ths_swiper-wrap元素上監聽滑動事件,.ths_swiper-wrap元素和.swiper元素滑動時都會觸發。所以我一開始是使用.self修飾符,只監聽.ths_swiper-wrap元素的滾動,移動的也是.ths_swiper-wrap元素。

但是這樣做會有個問題,手指點在.swiper元素上時無法滑動,只有點在.swiper外 && .ths_swiper-wrap內(.ths_swiper-wrap的padding,或.swiper的margin)時才能滑動。所以,最終我選擇不是滑動.ths_swiper-wrap元素,而是滑動全部.swiper元素。

事件處理

touchstart (e) ,

touchmove (e) ,

touchend (e) else

},doslide (distance) )

}

3、後期優化上面實現了最基礎的滑動翻頁元件,算是第一版,後期還有很多需要優化的地方,比如每個.swiper元素的高度如果不統一,父級高度應該自適應;滑動時為了提公升效能,不需要滑動所有.swiper元素,只需要滑動當前和即將要進入的兩個元素即可等等。

vue 滑動元件

vue slider,乙個簡單的滑動元件,配置簡單,支援自適應 全屏 按鈕 分頁,同時相容移動端和pc端 支援vue2.0 slider效果 完整文件 通過以下demo來實現 sliderinit sliderinit slider template import slider from slide...

swiper 迴圈切換 swiper 迴圈滑動問題

需要在原始碼中加兩行 進行判斷,分別是move移動時的禁止移動與end結束時的禁止跳轉 不能加粗 具體看有注釋的那行 1.查swipe原始碼裡的move函式,其中有乙個判斷 if options.continuous 加上這行 translate circle index 1 delta.x sli...

swiper 實現滑動解鎖

最近專案中有這樣乙個需求,研究了兩種寫法乙個原生,乙個使用框架 原生寫法 doctype html html head meta charset utf 8 title title link rel stylesheet href css huapin.css meta name viewport ...