精通Vue.js系列 │ 自定义指令v-drag范例

简介: 自定义指令范例:v-drag指令

640.jpg

1、自定义指令范例:v-drag指令

本文介绍一个比较复杂的自定义指令v-drag,它支持用鼠标拖曳网页上的特定DOM元素,参见例程1。

■ 例程1 v-drag.html


<html>
  <head>
    <meta charset="UTF-8">
    <title>Vue 范例 </title>
    <script src="vue.js"></script>
    <style>
      #app div{
        width: 100px;
        height: 100px;
        position:absolute;
      }
      #app .hello{
        background-color:yellow;
        top:0;
        left:0;
      }
      #app .world{
        background-color:pink;
        top:0;
        right:0;
      }
</style>
</head>

<body>
  <div id="app">
    <div class="hello" v-drag>Hello</div>
    <div class="world" v-drag>World</div>
  </div>
 
   <script>
     const app=Vue.createApp({})

     app.directive('drag',(el)=>{
       //处理在当前DOM元素中点击鼠标的事件 
       el.onmousedown=function(e){
         //获取鼠标点击处分别与div左边和上边的距离,取值为鼠标位置-div位置
         var disX=e.clientX-el.offsetLeft
         var disY=e.clientY-el.offsetTop
         console.log(disX,disY)

          //处理在整个网页区域中移动鼠标的事件
         document.onmousemove=function(e){
           //获取移动后div的位置,取值为:鼠标位置-disX/disY
           var l=e.clientX-disX
           var t=e.clientY-disY

           //重新设置DOM元素的位置,px是像素单位
           el.style.left=l+'px'      
           el.style.top=t+'px'
         }
 
         //处理在整个网页区域中,鼠标弹起,停止移动鼠标的事件
         document.onmouseup=function(e){
           document.onmousemove=null
           document.onmouseup=null
         }
       }
     })
 
     const vm=app.mount('#app')
</script>
  
</body>
</html>

通过浏览器访问v-drag,html,会出现如图1所示的网页。

640.png


■ 图1 v-drag.html的网页


在v-drag.html页面上有两个不同颜色的方框,分别对应两个

元素:
<div class="hello" v-drag>Hello</div>
<div class="world" v-drag>World</div>

用鼠标选中任意一个方框,在整个网页的区域内移动鼠标,方框就会随之移动,松开鼠标,方框就停止移动。

目录
相关文章
|
1月前
|
JavaScript
【vue】 vue2 自定义指令 实现全屏 、对话框拖拽
【vue】 vue2 自定义指令 实现全屏 、对话框拖拽
68 2
|
1月前
|
JavaScript
vue自定义指令详解
【4月更文挑战第5天】Vue自定义指令用于扩展模板功能,通过`Vue.directive()`全局或组件内注册。它们有生命周期钩子函数,如`bind`、`inserted`等,在不同阶段执行相应操作。在模板中以`v-`前缀或简写形式使用,可接受参数和修饰符来定制行为。
30 8
|
1月前
|
JavaScript
Vue3 自定义指令
Vue3 自定义指令
|
1天前
|
JavaScript API 数据安全/隐私保护
程序与技术分享:8个非常实用的Vue自定义指令
程序与技术分享:8个非常实用的Vue自定义指令
|
4天前
|
JSON 移动开发 JavaScript
Vue03基础语法(样式绑定、事件处理器、表单、自定义指令、vue组件、组件通信【自定义事件】)
Vue03基础语法(样式绑定、事件处理器、表单、自定义指令、vue组件、组件通信【自定义事件】)
10 0
|
1月前
|
JavaScript
学习Node.js入门范例
然后,cmd中运行命令node E:/Test/server.js
22 2
|
1月前
|
JavaScript 前端开发 开发者
Vue的自定义指令:创建自定义指令的技术详解
【4月更文挑战第24天】Vue.js 允许开发者创建自定义指令以扩展其功能。自定义指令提供灵活性,但需根据需求和最佳实践谨慎使用。
|
1月前
|
JavaScript API 开发者
自定义指令:创建和使用Vue自定义指令
【4月更文挑战第24天】Vue.js允许开发者创建自定义指令以适应特定需求,增强代码复用和可维护性。通过`Vue.directive`全局注册或组件内`directives`局部注册,定义指令行为。以`highlight`指令为例,展示`bind`和`click`钩子改变元素背景色。自定义指令包含多个生命周期钩子,可处理参数,提供灵活性。它们扩展HTML功能,封装复杂逻辑,提升代码质量,是Vue开发中的强大工具。
|
1月前
|
JavaScript 前端开发
vue自定义指令_按钮权限设计(从0创建项目开始设计)
vue自定义指令_按钮权限设计(从0创建项目开始设计)
29 1
|
1月前
|
JavaScript 前端开发 UED
教你用vue自定义指令做一个组件的遮罩层loading效果
教你用vue自定义指令做一个组件的遮罩层loading效果