一、自定义v-pin指令
给v-pin添加top.right修饰符
<div v-pin.top.right="card2.pinned" class="card"><a href="#" @click="card2.pinned=!card2.pinned">
钉住/取消2</a>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div>
在main.js中
可以通过如下代码获取修饰符
Vue.directive('pin', function(el,binding){
var pinned=binding.value;
var position=binding.modifiers;
console.log(position);
});
二、在main.js中遍历 修饰符
使元素top、right=10px
Vue.directive('pin', function(el,binding){
var pinned=binding.value;
var position=binding.modifiers;
console.log(position);
var flag=binding.arg;
if(pinned){
el.style.position='fixed';
for(var key in position){
if(position[key]){
el.style[key]='10px';
}
}
if(flag){
el.style.background='red';
}
}else{
el.style.position='static';
}
});
效果展示如下:
三、给自定义指令传参
<div v-pin:true.bottom.right="card1.pinned" class="card"><button @click="card1.pinned=!card1.pinned">钉住/取消1</button>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div>
在main.js中通过 var flag=binding.arg;获取参数
Vue.directive('pin', function(el,binding){
var pinned=binding.value;
var position=binding.modifiers;
console.log(position);
var flag=binding.arg;
if(pinned){
el.style.position='fixed';
for(var key in position){
if(position[key]){
el.style[key]='10px';
}
}
if(flag){
el.style.background='red';
}
}else{
el.style.position='static';
}
});
效果展示如下:
四、本篇完整代码如下
index.html
<div id="app">
<div v-pin:true.bottom.right="card1.pinned" class="card"><button @click="card1.pinned=!card1.pinned">钉住/取消1</button>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div>
<div v-pin.top.right="card2.pinned" class="card"><a href="#" @click="card2.pinned=!card2.pinned">钉住/取消2</a>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div>select *from paymentlog where businessno='DZBV202021020000002121 ';
</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</div>
main.js
Vue.directive('pin', function(el,binding){
var pinned=binding.value;
var position=binding.modifiers;
console.log(position);
var flag=binding.arg;
if(pinned){
el.style.position='fixed';
for(var key in position){
if(position[key]){
el.style[key]='10px';
}
}
if(flag){
el.style.background='red';
}
}else{
el.style.position='static';
}
});
new Vue({
el: '#app',
data:{
card1:{
pinned:false,
},
card2:{
pinned:false,
}
},
methods:{
},
});