https://cn.vuejs.org/v2/guide/custom-directive.html

在vue中,有时候我们会把抽象的方法封装为一个自定义指令,多个地方共用

比如:拖拽指令

 <div id="myChart1" class="myChart1" v-drag>
{{positionX}}
{{positionY}}
</div>
 data () {
return {
positionX: ,
positionY: ,
parentWidth: ,
parentHeight:
}
},
directives: {
drag: {
inserted: function (el, binding, vnode) {
let _this = vnode.context // 指令里要想获取vue实例,可以使用vnode.context
let parentWidth = _this.$refs.test.offsetWidth
let parentHeight = _this.$refs.test.offsetHeight
let odiv = el // 获取目标元素
odiv.onmousedown = (e) => {
console.log(e) // 这俩个e一样
// 算出鼠标相对元素的位置
let disX = e.clientX - odiv.offsetLeft
let disY = e.clientY - odiv.offsetTop // 并移动的事件
document.onmousemove = (e) => {
console.log(e) // 这俩个e一样
// 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
let left =
let top =
if ((e.clientX - disX) < ) {
left =
} else if ((e.clientX - disX) > (parentWidth - odiv.offsetWidth)) {
left = parentWidth - odiv.offsetWidth
} else {
left = e.clientX - disX
} if ((e.clientY - disY) < ) {
top =
} else if ((e.clientY - disY) > (parentHeight - odiv.offsetHeight)) {
top = parentHeight - odiv.offsetHeight
} else {
top = e.clientY - disY
} // 绑定元素位置到positionX和positionY上面
_this.positionX = top
_this.positionY = left // 移动当前元素
odiv.style.left = left + 'px'
odiv.style.top = top + 'px'
}
document.onmouseup = (e) => {
document.onmousemove = null
document.onmouseup = null
}
}
}
}
},

备注:

1、使用this.$refs获取动态值的时候,要这样写   this.$refs['value']

2、拖拽的div样式要特别注意:position要为absolute,不能用transform: translate(),否则拖拽后样式会异常

最新文章

  1. Java注解
  2. CSS选定第k个元素
  3. coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解
  4. JavaScript基础整理(1)
  5. NodeJs - 序列化
  6. Javascript操作元素属性方法总结
  7. 拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!
  8. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)
  9. Programming from the ground up(0)
  10. ACM_并查集
  11. ECMAScript 5 新特性
  12. alertifyjs
  13. 04_Struts2标签
  14. img标签里的value获取
  15. vuex store刷新存储状态
  16. windows解决访问github慢问题
  17. Redis消息通知(任务队列和发布订阅模式)
  18. springmvc处理过程理解(一)
  19. 使用Charles进行网络请求抓包解析
  20. Oracle创建Rman备份专用账户

热门文章

  1. C# WinForm界面美化--使用IrisSkin实现换肤功能
  2. 一起学SpringMVC之RequestMapping详解
  3. C# copy folder and files from source path to target path
  4. 【翻译】全新16英寸MacBook Pro评测:开发人员的梦想成真
  5. JS基础语法---Array对象的方法
  6. JS基础语法---String对象下的方法(字符串的方法)
  7. 腾讯云大学 x CODING | 当 DevOps 邂逅云原生
  8. MySQL数据库:聚合函数的使用
  9. 苹果 macOS 安装 Source Code Pro
  10. mysql数据库基础SQL语句总结篇