<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .box{ width:200px; height:200px; background-color:red; display: flex; justify-content:center; align-items: center; } </style> </head> <body> <div id="app"> <h1>{{msg}}</h1> <p>--------------------</p> <h1 v-text="msg"></h1> </div> <script src="js/vue.3.2.2.js"></script> <script> //定义局部指令 const lkDirective = { focus:{ created(){ console.log("created"); }, beforeMount(){ console.log("beforeMount"); }, mounted(el) { el.focus(); }, beforeUpdate(){ console.log("beforeUpdate"); }, updated(){ console.log("updated"); }, beforeUnmount(){ console.log("beforeUnmount"); } } } // 1、创建Vue的实例对象 const app = Vue.createApp({ data(){//定义数据 return { msg:'你好!', isShow:true, posData:{ top:200, left:200 } } }, //挂载局部介指令 directives:lkDirective, template:'<div v-show="isShow" class="box" v-fixed:pos="posData"><input type="text" placeholder="请输入" v-focus></div>' }); //定义全局介指令 // app.directive('focus',{ // mounted(el,{value},{transition}){ // el.focus(); // } // }); app.directive('fixed',(el,binding)=>{ // console.log(el,binding); el.style.position='fixed'; el.style.left=binding.value.left+'px'; el.style.top=binding.value.top+'px'; }) app.mount('#app'); </script> </body> </html>