前端开发中有许许多多的拖拽与手机滑动的行为,大多数UI库都封装了不少这类事件,但这样却有个问题。就是当咱们须要根据自身状况逻辑来定义这类事件时却会有很大局限性,原生代码实现又十分繁琐复制,且难以管理。html
意识到这个问题后我开发了一个实现可复用拖拽/滑动的功能库,语法架构参考Vue的数据管理结构,该库实现的观念是能够高度自定义实现这类事件,并有很好的扩展性与简便性。
github地址: https://github.com/TuiMao233/...
npm地址: https://www.npmjs.com/package...
该库的使用步骤以下。前端
import reusableDrag from 'resusable-drag'
<!-- 又或者script中引入 --> <script src="./js/resusable-drag.js"></script>
const touch_sliding_screen = new reusableDrag({ data() { return { // 自定义默认使用的数据,滑动延迟,或者其余数据等 // 在这里定义的数据可在后续逻辑中使用 wrapper: this.el.querySelector('.wrapper'), pagination: this.el.querySelector('.pagination'), slidingDistance: 300, delay: 2000, //..... } }, mounted() { // 定义初始化执行 this.el.style.background = 'rgba(0,0,0,.5)' //.... }, methods: { // 定义行为方法 setWidth :function () { //.... } }, // resusable-drag 会检测当前设备类型, 当检测到是移动设备时, 自动切换为touch等事件 touch: { // 定义滑屏事件行为 start: function (ev) { }, move: function (ev) { }, end: function (ev) { } }, // resusable-drag 会检测当前设备类型, 当检测到是PC设备时, 自动切换为mouse等事件 /* mouse: { // 或定义PC端拖拽事件行为 down (ev) {},move (ev) {},up (ev) {} }, */ })
在建立一个拖拽时,能够传入自定义数据,该数据会覆盖掉data中的数据,而且会在事件逻辑中使用覆盖数据。git
touch_sliding_screen.create({ el:document.querySelector('.mi-carousel'), slidingDistance: 300, delay: 1000, // mouseclasp:{down(r){},move(r){},up(r){}}, // mouseclasp // touchclasp:{start(r){},move(r){},end(r){}} // touchclasp })