image-component
npm install vue-coe-image
Component for progressive and lazy rendering images inspired by:
Intersection Observer API
✨ Example✨
Explanation
https://developers.google.com/web/tools/lighthouse/audits/offscreen-images
Disclaimer
In the past, it was very difficult and expensive to detect the visibility of a particular element.
The Intersection Observer API solves this problem in a really organized, efficient and performative way.
It provides a workable template that we can observe to be notified when an element enters the viewport.
Competitive Diferentials
Warning
The IntersectionObserver API is not fully supported by all modern browsers just yet, but there’s a polyfill for it maintained by the w3c.
Install
yarn add vue-coe-image
Include Plugin (to import globally)
``javascript
import Vue from 'vue'
import 'vue-coe-image/dist/vue-coe-image.css'
import { VueCoeImage } from 'vue-coe-image'
Vue.use(VueCoeImage)
`
Register in component (to import locally)
`vue`
Pay Attention
You need to import the style file so the animations will work!
I recommend doing this on a global level.
`javascript`
import 'vue-coe-image/dist/vue-coe-image.css'
Use
`vue
fallback="https://i.ytimg.com/vi/Yt9t9e9gmmw/maxresdefault.jpg"
/>
`
A Note on Performance
Observe the elements occupy memory and CPU!
For this reason, immediately after finding the element, we use an instance method named disconnect to stop observing and make the lib more performative.
Name | type | required | About
----- | ------- | -------- | ------
loaderImage | String | false | shows while the image is not loaded (has a default)true
src | String | | Image to load when crossing viewportfalse
srcset | String | | Images to be used for different resolutionsfalse
fallback | String | | Also known as a 'placeholder', this prop avoids an error if it fails or delays loading the image.false
animation | Bollean | | Animation handler (default is true) false
intersectionOptions | Object | | options by mdnfalse
delay | String | | Delay to show imagefalse
blurLevel | Number | | Blur animationfalse` | Animation duration time
duration | Number |
Name | About
----- | -----
intersect | Triggered when the image crosses the viewport for more complex animations and state manipulation
error | Triggered when an image upload error occurs