<template>
<div>
<img v-for="image in lazyImages" :key="image.src" v-lazyload="image.src" :alt="image.alt" />
</div>
</template>
<script>
export default {
data() {
return {
lazyImages: [
{ src: "image1.jpg", alt: "Lazy Image 1" },
{ src: "image2.jpg", alt: "Lazy Image 2" },
{ src: "image3.jpg", alt: "Lazy Image 3" },
{ src: "image4.jpg", alt: "Lazy Image 4" },
],
};
},
directives: {
lazyload: {
inserted(el, binding) {
const options = {
root: null,
threshold: 0,
};
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
el.src = binding.value;
observer.unobserve(el);
}
});
}, options);
observer.observe(el);
},
},
},
};
</script>