vue滑动验证组件,vue 滑块验证

  vue滑动验证组件,vue 滑块验证

  这篇文章主要为大家详细介绍了某视频剪辑软件封装图片滑块验证组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了某视频剪辑软件封装图片滑块验证组件的具体代码,供大家参考,具体内容如下

  滑块验证组件整体不难,主要在于设置图片的样式问题,想要让背景图充满div,就需要滑块图片也跟随等比放大,效果与代码如下:

  HTML:

  模板

  section class=slider-section

  div class=img-box

  img:src= data:image/png;base64,滑块数据。bigimg class= BG-img ref= BG img /

  img:src= data:image/png;base64,滑块数据。small img class= slider-img ref= slider img /

  /div

  div class=滑块框

  span class=slider-text 向右滑动滑块填充拼图/span

  div class= slider-icon @ mousedown= range move /div

  /div

  /部分

  /模板

  JS:

  脚本

  导出默认值{

  道具:[sliderData],//父组件传入的滑块数据对象

  观察:{

  sliderData: { //监听滑块数据变化,重置滑块位置

  处理程序(新瓦尔,旧瓦尔){

  if (newVal) {

  this.init()

  }

  },

  深:真的

  }

  },

  data () {

  返回{

  disX: 0 //滑块距离背景图左侧的位置

  }

  },

  已安装(){

  this.init()

  },

  方法:{

  //初始化滑块的位置

  init () {

  this.disX=0 //初始化滑块位置

  let bigImg=new Image() //创建背景图片

  bigimg。src= data:image/png;base64, this.sliderData.bigImg

  bigImg.onload=()={

  let originWidth=bigImg.width //获取原始背景图片的宽度

  让宽度比率=this .$参考文献。华大基因mg。宽度/原点宽度//背景图片渲染后的实际宽度/原始图片宽度

  let smallImg=new Image() //创建滑块图片

  小img。src= data:image/png;base64, this.sliderData.smallImg

  这个参考文献。滑动rimg。src= data:image/png;base64, this.sliderData.smallImg //设置滑块图片地址

  这个参考文献。滑动rimg。风格。宽度=小img。宽度*宽度比率 px //设置滑块图片宽度

  这个参考文献。滑动rimg。风格。top=这个。滑块数据。小*这个.$refs.bgImg.height px //设置滑块距离背景图顶部的距离

  这个. refs $ slide rimg . style . left=0//设置滑块距离背景图左侧的距离

  }

  },

  //移动事件触发

  范围移动(e) {

  让ele=e .目标

  设startX=e.clientX

  设eleWidth=ele.offsetWidth

  设父宽度=ele。父元素。偏移距离

  设MaxX=parentWidth - eleWidth

  document.onmousemove=(e)={

  设endX=e.clientX

  this.disX=endX - startX

  这个参考文献。滑动rimg。风格。左=这个。disx px

  if (this.disX=0) {

  this.disX=0

  这个. refs.sliderImg.style.left=0

  }

  if (this.disX=MaxX - eleWidth) {//减去滑块的宽度,体验效果更好

  this.disX=MaxX

  这个参考文献。滑动rimg。风格。left=(父宽度-this .$refs.sliderImg.width) px

  }

  ele.style.transition= .1s all

  ele。风格。transform= translate x( this。disx px)

  预防默认()

  }

  document.onmouseup=()={

  这个. emit(submitPic ,this.disX/parentWidth) //停止滑动事件冒泡给父级

  setTimeout(()={

  ele。风格。过渡="。5s全部”;//初始化滑块位置

  ele。风格。transform= translate x(0);

  }, 200)

  document.onmousemove=null

  document.onmouseup=null

  }

  }

  }

  }

  /脚本

  CSS:

  样式范围语言=少。滑块部分{

  边距:20px 0;img-box {

  位置:相对;血糖-img {

  宽度:100%;

  }。滑块-img {

  位置:绝对;

  左:0;

  top:0;

  }

  }。滑块框{

  边距-顶部:20px

  背景:# f7f 9 fa

  颜色:# 666;

  边框:1px实心# e4e 7 EB

  位置:相对;

  高度:30px

  宽度:100%;

  :悬停{

  盒影:0 0 3px # ccc

  }。滑块-文本{

  字体大小:14px

  位置:绝对;

  top:50%;

  左:50%;

  transform: translate(-50%,-50%);

  }。滑块图标{

  宽度:30px

  高度:30px

  背景:# c8923a

  文本对齐:居中;

  字体大小:20px

  颜色:# fff

  盒影:0 0 6px # ccc

  }

  }

  }

  /风格

  注意:使用mousedown、onmousemove、onmouseup事件,只支持PC端。如果想在移动端使用它们,需要把这些事件改成touch等。

  这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: