Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | <template> <img v-lazy :class="setClassStyle()" src="@/assets/img/Curve-Loading.gif" :data-src="`${getImage(image)}`" /> </template> <script> import { getStrapiMedia } from "~/utils/medias"; export default { name: "PreloaderImage", props: { image: { required: true, type: String, }, classStyle: String, rounded: Boolean, }, methods: { getStrapiMedia, getImage: function (image) { if (image) { return this.getStrapiMedia(image); } return null; }, setClassStyle: function () { const rounded = this.rounded ? "border-round" : ""; if (this.classStyle) { return `${this.classStyle} ${rounded}`; } return `m-auto ${rounded}`; }, }, directives: { lazy: { inserted: (el) => { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(function (entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.src = lazyImage.dataset.src; observer.unobserve(el); } }); }); observer.observe(el); }, }, }, }; </script> <style scoped> .vue-load-image { display: flex; height: 100%; } .border-round { border-radius: 10px; } </style> |