Vue.directive自定义指令的使用详解
发布时间 - 2026-01-11 00:06:23 点击率:次很多教程都是在讲自定义指令的概念和语法,看的相当蛋疼.本文不讲语法和概念,只讲用法.

自定义指令基本就是用来操作DOM的,虽然官方推荐数据驱动视图,有时候还是需要自定义指令来操作DOM,指令可复用.
1. 自定义指令实现拖拽
HTML:
<div v-drag>我可以拖拽</div>
JS:
Vue.directive('drag',
inserted:function(el){ //inserted 钩子函数:当元素被插入父元素时触发,可省略
let oDiv=el; //el --> 触发的DOM元素
oDiv.onmousedown=function(e){
let l=e.clientX-oDiv.offsetLeft;
let t=e.clientY-oDiv.offsetTop;
document.onmousemove=function(e){
oDiv.style.left=e.clientX-l+'px';
oDiv.style.top=e.clientY-t+'px';
};
oDiv.onmouseup=function(){
document.onmousemove=null;
oDiv.onmouseup=null;
}
}
})
自定义指令还可以引入第三方插件,之前都是用JQuery来构建项目.
自定义指令的好处就是不管之前是用什么写的JQuery还好或是原生js也好都可以直接拿来封装成自定义指令,不需要重写
例如这个拖拽:
Drag.js:
export default function(el){
let oDiv=el;
oDiv.onmousedown=function(e){
let l=e.clientX-oDiv.offsetLeft;
let t=e.clientY-oDiv.offsetTop;
document.onmousemove=function(e){
oDiv.style.left=e.clientX-l+'px';
oDiv.style.top=e.clientY-t+'px';
};
oDiv.onmouseup=function(){
document.onmousemove=null;
oDiv.onmouseup=null;
}
}
}
Vue:
import drag from 'drag.js'
Vue.directive('drag',drag)
HTML:
<div v-drag>我可以拖拽</div>
2. 图片加载
图片在加载过程中,未加载完成时,使用一个随机的颜色占位,图片加载完后直接显示,可以使用自定义指令来完成
HTML:
<img v-imgUrl="url"></img> //参数不可以直接填写url地址
data () {
url:'src/assets/logo.png'
}
Vue:
Vue.directive('imgUrl',function(el,binding){
var color=Math.floor(Math.random()*1000000);//设置随机颜色
el.style.backgroundColor='#'+color;
var img=new Image();
img.src=binding.value;// -->binding.value指的是指令后的参数
img.onload=function(){
el.style.backgroundColor='';
el.src=binding.value;
}
})
可以使用lodash.js工具库
vue更多的API整理-->GO
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue自定义指令
# vue2.0
# 自定义指令
# vue2
# vue使用自定义指令实现按钮权限展示功能
# vue全局自定义指令和局部自定义指令的使用
# 详解Vue自定义指令及使用
# vue使用自定义指令实现拖拽
# 使用vue自定义指令开发表单验证插件validate.js
# vue自定义指令directive的使用方法
# vue 使用自定义指令实现表单校验的方法
# Vue自定义指令使用方法详解
# Vue自定义指令简介和基本使用示例
# 自定义
# 拖拽
# 加载
# 可以使用
# 都是
# 是在
# 还可以
# 不需要
# 不可以
# 可以直接
# 重写
# 第三方
# 指的是
# 来完成
# 完后
# 不讲
# 大家多多
# 过程中
# 复用
# 只讲
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
网站优化排名时,需要考虑哪些问题呢?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
canvas 画布在主流浏览器中的尺寸限制详细介绍
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
简单实现Android文件上传
浅述节点的创建及常见功能的实现
非常酷的网站设计制作软件,酷培ai教育官方网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何快速搭建自助建站会员专属系统?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
网站页面设计需要考虑到这些问题
图册素材网站设计制作软件,图册的导出方式有几种?
如何在阿里云通过域名搭建网站?
javascript读取文本节点方法小结
Laravel如何实现API版本控制_Laravel版本化API设计方案
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
b2c电商网站制作流程,b2c水平综合的电商平台?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
IOS倒计时设置UIButton标题title的抖动问题
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
C++时间戳转换成日期时间的步骤和示例代码
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何正确下载安装西数主机建站助手?
html如何与html链接_实现多个HTML页面互相链接【互相】
Firefox Developer Edition开发者版本入口
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
jQuery validate插件功能与用法详解
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Python函数文档自动校验_规范解析【教程】
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel如何处理异常和错误?(Handler示例)
进行网站优化必须要坚持的四大原则
html5的keygen标签为什么废弃_替代方案说明【解答】
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
如何在橙子建站中快速调整背景颜色?
利用JavaScript实现拖拽改变元素大小
Laravel如何与Pusher实现实时通信?(WebSocket示例)

