当前位置: 首页 > 编程笔记 >

vue 实现左右拖拽元素并且不超过他的父元素的宽度

诸福
2023-03-14
本文向大家介绍vue 实现左右拖拽元素并且不超过他的父元素的宽度,包括了vue 实现左右拖拽元素并且不超过他的父元素的宽度的使用技巧和注意事项,需要的朋友参考一下

话不多说,先上需求图

需求:这是一个音频播放的组件,隐藏audio样式,用js调用脚本方法实现,目前功能基本实现,但是有个问题,图中共有一根绿色的begin线和红色的end线,使用这两根线切割音频,意思就是拖拽获取拖拽后的刻度传给后端,为此,去学习了一下拖拽,
上代码:

html部分

<!--红绿线-->
     <div class="begin-end-line">
      <img :src="lineGreen" alt="" class="line bg-line" id="green" draggable="true" @mousedown="moveGreen">
      <img :src="lineRed" alt="" class="line end-line" id="red" draggable="true" @mousedown="moveRed">
     </div>

methods部分

moveGreen(e) {
    let odiv = e.target;    //获取目标元素
    //算出鼠标相对元素的位置
    let disX = e.clientX - odiv.offsetLeft;
    document.onmousemove = (e)=>{    //鼠标按下并移动的事件
     //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
     let left = e.clientX - disX;
     if(left<-6){
      return left=-6
     }
     if (left>684){
      return left=684
     }
     console.log(left);
     //绑定元素位置到positionX和positionY上面
     this.positionX = top;

     //移动当前元素
     odiv.style.left = left + 'px';
    };
    document.onmouseup = (e) => {
     document.onmousemove = null;
     document.onmouseup = null;
    };
   }

现在就可以自由的拖动了

let left = e.clientX - disX;
     if(left<-6){
      return left=-6
     }
     if (left>684){
      return left=684
     }
     console.log(left);

这段代码我解释一下,此段代码就是给拖动的时候左右做限制,让拖动元素不超过父元素,left<-6是限制左边,left>684限制右边,注意一点就是,父元素为相对定位,拖拽元素为绝对定位
上个拖拽之后效果图(规定只能左右移动)

总结

以上所述是小编给大家介绍的vue 实现左右拖拽元素并且不超过他的父元素的宽度,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍jQuery实现html元素拖拽,包括了jQuery实现html元素拖拽的使用技巧和注意事项,需要的朋友参考一下 代码很简单,效果非常棒,直接给大家上源码: html css js 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍vue全局自定义指令-元素拖拽的实现代码,包括了vue全局自定义指令-元素拖拽的实现代码的使用技巧和注意事项,需要的朋友参考一下  小白我用的是vue-cli的全家桶,在标签中加入v-drap则实现元素拖拽, 全局指令我是写在main.js中 后面肯定要补充放大缩小功能,和把定位,宽度信息保留到vuex中的state中 pS:下面看下面板拖拽之vue自定义指令,具体内容如下所述: 前

  • 当 jQuery UI 可拖拽元素被拖动到日程表上后触发: function( date, allDay, jsEvent, ui ) { } date 是当前的“可拖拽元素”拖动到的位置的 js Date对象。 allDay jsEvent ui this 是被拖拽的DOM元素。 官方英文文档:http://arshaw.com/fullcalendar/docs/dropping/drop/

  • dropAccept 提供了一种方法来判断哪些元素可以拖拽到日程表上,值为字符串或者函数,默认值为“*”。 默认情况下,将 FullCalendar 的 droppable 设置为 true,日程表接受所有“可拖拽元素”。dropAccept 属性让 FulLCalendar 更加有选择性的接受“可拖拽元素”。 dropAccept 的值可以是一个 jQuery 选择器字符串。也可以是一个函数,接

  • 定义外部的 jQuery UI 拖拽元素是否可以拖动到日程表上,值为布尔类型,默认false。此属性依赖于 jQuery UI,必须下载引用 jQuery UI 的文件,然后初始化可拖拽元素。此外,还要将 FullCalendar 的 droppable 属性设置为 true。下例演示如何初始化一个元素,拖拽到日程表: $('#my-draggable').draggable({ reve

  • 问题内容: 总览 我具有以下HTML结构,并且将和事件附加到了元素上。 问题 当我将文件拖到时,事件将按预期触发。但是,当我将鼠标移到子元素(例如)上时,会为该元素触发该事件,然后为该元素触发该事件。 如果我再次将鼠标悬停在该元素上,则再次触发该事件,这很酷,但是随后为刚刚剩下的子元素触发了该事件,因此执行了该指令,这并不酷。 此行为有问题的原因有两个: 我只附加&,所以我不明白为什么子元素也要附