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


Posted in Javascript onNovember 30, 2018

话不多说,先上需求图

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 实现左右拖拽元素并且不超过他的父元素的宽度

总结

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

Javascript 相关文章推荐
jquery.tmpl JQuery模板插件
Oct 10 Javascript
jquery移动listbox的值原理及代码
May 03 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
jquery实现可关闭的倒计时广告特效代码
Sep 02 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
JS实现数组按升序及降序排列的方法
Apr 26 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
vue.js整合mint-ui里的轮播图实例代码
Dec 27 Javascript
小程序实现列表多个批量倒计时
Jan 29 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
微信小程序实现保存图片到相册功能
Nov 30 #Javascript
js canvas实现写字动画效果
Nov 30 #Javascript
webpack打包多页面的方法
Nov 30 #Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
Nov 30 #Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
Nov 30 #Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 #Javascript
js字符串倒序的实例代码
Nov 30 #Javascript
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
七款最流行的PHP本地服务器分享
2013/02/19 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
jQuery实现验证用户登录
2019/12/10 jQuery
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python File(文件) 方法整理
2019/02/18 Python
python 自动批量打开网页的示例
2019/02/21 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Python排序函数的使用方法详解
2020/12/11 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书