26 lines
726 B
JavaScript
26 lines
726 B
JavaScript
// 定义懒加载插件
|
|
import { useIntersectionObserver } from '@vueuse/core'
|
|
|
|
export const lazyPlugin = {
|
|
install (app) {
|
|
// 懒加载指令逻辑
|
|
app.directive('img-lazy', {
|
|
mounted (el, binding) {
|
|
// el: 指令绑定的那个元素 img
|
|
// binding: binding.value 指令等于号后面绑定的表达式的值 图片url
|
|
// console.log(el, binding.value)
|
|
const { stop } = useIntersectionObserver(
|
|
el,
|
|
([{ isIntersecting }]) => {
|
|
console.log(isIntersecting)
|
|
if (isIntersecting) {
|
|
// 进入视口区域
|
|
el.src = binding.value
|
|
stop()
|
|
}
|
|
},
|
|
)
|
|
}
|
|
})
|
|
}
|
|
} |