Loading

vue3使用自定义指令实现图片懒加载

// 自定义指令
app.directive('lazy', {
    mounted(el, binding) { // 绑定的元素,绑定的值
        // IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断
        const observe = new IntersectionObserver(([{isIntersecting}]) => {
            if (isIntersecting) { // 如果进入了可视区
                console.log("进入了")
                // 停止观察,加载出来之后就不需要继续观察了
                observe.unobserve(el)
                console.log(el,binding.value,) // binding.value就是绑定的地址
                // 将地址给src显示
                el.src = binding.value
            }
        })
        observe.observe(el)// 使用observe上的observe方法观察这个dom元素
    }
})

模板中使用

<img v-lazy="`src/assets/2yz3m9.jpg`" alt="">
posted @ 2024-01-28 15:40  雾气^^  阅读(22)  评论(0编辑  收藏  举报