美文网首页
vue中使用自定义指令写图片懒加载 @劉䔳

vue中使用自定义指令写图片懒加载 @劉䔳

作者: 劉䔳Fairy | 来源:发表于2019-07-10 21:13 被阅读0次

在main.js中(全局)

Vue.directive('load', {
//钩子函数
inserted(el,binding,vNode) {
    // el:指令所绑定的元素,可以用来直接操作 DOM 。
    function loadImg(el,binding){
        if(!el.src){
            el.src=binding.value;
        }
    }
    // console.log(binding)
    const io=new IntersectionObserver(ioes=>{
        ioes.forEach(ioe=>{
            // target 被观察的目标元素,是一个 DOM 节点对象
            const el=ioe.target;
            // intersectionRatio 目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时为1,完全不可见时小于等于0
            const intersectionRatio=ioe.intersectionRatio;
            if(intersectionRatio>0&&intersectionRatio<=1){
                loadImg(el,binding)
            }
            el.onload=el.onerror=()=>io.unobserve(el);
            // 当图片加载成功或是失败时就停止观察
        })
    })
    io.observe(el);
}
})

在html中

<img  v-load="图片路径" alt="">

相关文章

网友评论

      本文标题:vue中使用自定义指令写图片懒加载 @劉䔳

      本文链接:https://www.haomeiwen.com/subject/ohikkctx.html