Vue3自定义指令

拖拽

//抽离成单独文件
export default {
    // beforeMount(el,binding){
    //     console.log('beoreMount==',el,binding);
    // },
    // mounted(el,binding){
    //     console.log('el===',binding);
    // },
    // beforeUpdate(el){
    //     console.log('beforeUpdate==',el);
    // },
    // updated(){
    //     console.log('updated==');
    // },
    // beforeUnmount(el){
    //     console.log('beforeUnmount==');
    // },
    // unmounted(){
    //     console.log('unmounted==');
    // }
    beforeMount(el) {
        el.style.position = 'absolute';
      },
    
      mounted(el) {
        let isDragging = false;
        let currentX, currentY, initialX, initialY;
    
        const onMouseDown = (e) => {
          initialX = e.clientX - el.offsetLeft;
          initialY = e.clientY - el.offsetTop;
          isDragging = true;
        };
    
        const onMouseMove = (e) => {
          if (isDragging) {
            e.preventDefault();
            currentX = e.clientX - initialX;
            currentY = e.clientY - initialY;
    
            el.style.left = `${currentX}px`;
            el.style.top = `${currentY}px`;
          }
        };
    
        const onMouseUp = () => {
          isDragging = false;
        };
    
        el.addEventListener('mousedown', onMouseDown);
        document.addEventListener('mousemove', onMouseMove);
        document.addEventListener('mouseup', onMouseUp);
      },
    
      beforeUnmount(el) {
        el.removeEventListener('mousedown', onMouseDown);
        document.removeEventListener('mousemove', onMouseMove);
        document.removeEventListener('mouseup', onMouseUp);
      },
}




----- 在main.js里面注册
import Drag from './utils/drag.js';
import Author from './utils/author.js';
let app = createApp(App)

app.directive('drag',Drag);
app.directive('author',Author);

按钮权限验证

export default {
    // beforeMount (el,binding) {
    //     console.log(binding);
    // },
    mounted (el,binding) {
        let token = localStorage.getItem('tokens');
        if(!token){
            el.parentNode.removeChild(el);
        }
        // console.log(el.parentNode.removeChild(el));
    }
}

实现图片懒加载

export default {
    mounted (el,binding) {
        let imgSrc = binding.value;
        console.log(window.innerHeight);
        window.addEventListener('scroll', function(e){
            let top = el.getBoundingClientRect().top;
            if(top <= window.innerHeight){
                el.src = imgSrc;
            }
            console.log(el.getBoundingClientRect().top);
        })
    }
}

// 需要传递参数;图片的真实地址
<img v-lazy="'https://img0.baidu.com/it/u=3368678403,249914024&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500'" alt="">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值