vue实现滑块拖拽校验功能的全过程

效果图

vue实现滑块拖拽校验功能的全过程_第1张图片

定义骨架,写html和css

html部分


css部分: 由于担心图片源的问题,所以写成了base64的图片


实现滑动拖拽校验

定义参数

data() {
    return {
        beginClientX:0,               // 距离屏幕左端距离
        mouseMoveStata:false,         // 触发拖动状态  判断
        maxwidth:'',                  // 拖动最大宽度,依据滑块宽度算出来的
        confirmWords:'拖动滑块验证',   // 滑块文字
        confirmSuccess:false          // 验证成功判断
    }
}

1. 在mounted里面,根据滑块宽度计算可拖动最大宽度以及监听手指的触摸和离开事件

mounted() {
    // 根据滑块宽度计算可拖动最大宽度
    this.maxwidth = this.$refs.dragDiv.clientWidth - this.$refs.moveDiv.clientWidth
    // 监听手指的触摸事件
    document.getElementsByTagName('html')[0].addEventListener('mousemove', this.mouseMoveFn)
    // 监听手指离开事件
    document.getElementsByTagName('html')[0].addEventListener('mouseup', this.moseUpFn)
}

2. 编写手指滑动的事件和手指离开的事件

mousemove事件

首先判断是否触发拖动状态,然后计算拖动的距离和模块距离,实时赋值

//验证成功函数
mouseMoveFn(e){
    if(this.mouseMoveStata){
        let width = e.clientX - this.beginClientX
        if(width > 0 && width <= this.maxwidth) {
            document.getElementsByClassName('handler')[0].style.left = width + 'px'
            document.getElementsByClassName('drag_bg')[0].style.width = width + 'px'
        }else if(width > this.maxwidth) this.successFunction()
    }
},

mouseup事件

把拖动状态改成false,并且把滑块移到对应的手指落下位置上

moseUpFn(e) {
    this.mouseMoveState = !1                        // 修改状态
    const width = e.clientX - this.beginClientX     // 计算获取宽度
    if(width < this.maxwidth) {                     // 当宽度小于模块的宽度时,赋值
        document.getElementsByClassName('handler')[0].style.left = 0 + 'px'
        document.getElementsByClassName('drag_bg')[0].style.width = 0 + 'px'
    }
}

在上面html部分的handler块里,定义了mousedown事件(mousedownFn($event))

需要阻止文件选中等浏览器默认行为,并把触发拖动状态这个阈值打开,记录手指移动的距离

mousedownFn:function (e) {
    e.preventDefault && e.preventDefault()   // 阻止文字选中等 浏览器默认事件
    this.mouseMoveStata = true               // 把触发拖动状态这个阈值打开
    this.beginClientX = e.clientX            // 记录手指移动的距离
},

至此,功能就完成了。。

完整的JS代码如下


总结

到此这篇关于vue实现滑块拖拽校验功能的文章就介绍到这了,更多相关vue滑块拖拽校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(vue实现滑块拖拽校验功能的全过程)