当前位置:网站首页>Principle of lazy loading of pictures
Principle of lazy loading of pictures
2022-07-04 22:59:00 【Front end sweeping monk】
What is image lazy loading
Similar to large-scale Taobao jd.com and other web pages , There are a lot of product picture information , If we make all the pictures contained in the page load at one time , The loading speed is very slow, and the user experience is very poor .
At present, the popular method is rolling dynamic loading , That is lazy loading , Pictures displayed outside the screen are not loaded by default , As the page scrolls , The picture has entered the display range , Then trigger the loading and display of the picture , It is usually used with the skeleton screen .
The benefits of doing this , First, the page loading speed is fast , It's about saving traffic , Because few users will scroll the page from top to bottom .
The principle of image lazy loading
First the img Labeled src Link to same picture ( The default image ), When js When listening to the picture entering the visual window , Then apply the actual address .
Method 1
The traditional way to do this is , Listen to the scroll After the event , Call the target element ( Green Square ) Of getBoundingClientRect() Method , Get the coordinates that correspond to the upper left corner of the view , Then judge whether it's in the view . The disadvantage of this method is , because scroll Events happen in an intensive way , It takes a lot of calculation , Easy to cause performance problems .
Get the size of the visual window , Judge the cross area
If the picture appears in the viewport , assignment src
Method 2
new IntersectionObserver API, Can be automatically " Observe " Whether elements are visible ,Chrome 51+ Has supported . Because it's visible (visible) The essence is , The target element creates an intersection with the viewport , So this API be called " Cross viewer ".
IntersectionObserver It's the browser's native constructor , Take two parameters :callback Is a callback function when visibility changes ,option It's the configuration object ( This parameter is optional ).
IntersectionObserverEntry Object provides information about the target element , There are six attributes .
time: When visibility changes , It's a high-precision timestamp , The unit is millisecond
target: Observed target elements , It's a DOM Node object
rootBounds: Information about the rectangular area of the root element ,getBoundingClientRect() Return value of method , If there is no root element ( That is, scrolling directly relative to the viewport ), Then return to null
boundingClientRect: Information about the rectangular area of the target element
intersectionRect: Target element and viewport ( Or root element ) The information of the intersection area
intersectionRatio: The visible proportion of the target element , namely intersectionRect Occupy boundingClientRect The proportion of , When fully visible 1, Less than or equal to when completely invisible 0
IntersectionObserver API It's asynchronous , Does not trigger synchronously with the rolling of the target element .
边栏推荐
- sobel过滤器
- 攻防世界 MISC 进阶 glance-50
- Attack and defense world misc master advanced zone 001 normal_ png
- Redis入门完整教程:API的理解和使用
- Redis入门完整教程:事务与Lua
- 【剑指offer】1-5题
- Logo special training camp section II collocation relationship between words and graphics
- Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
- Complete tutorial for getting started with redis: bitmaps
- MySQL Architecture - logical architecture
猜你喜欢
A complete tutorial for getting started with redis: transactions and Lua
Mongodb aggregation operation summary
The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
攻防世界 MISC 进阶区 hit-the-core
页面关闭前,如何发送一个可靠请求
Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
SHP data making 3dfiles white film
One of the commonly used technical indicators, reading boll Bollinger line indicators
10 schemes to ensure interface data security
MySQL Architecture - user rights and management
随机推荐
9 - class
String类中的常用方法
Locust performance test - environment construction and use
Attack and defense world misc advanced zone 2017_ Dating_ in_ Singapore
Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
Attack and defense world misc advanced area ditf
Redis getting started complete tutorial: publish and subscribe
Redis入门完整教程:HyperLogLog
Redis getting started complete tutorial: Geo
环境加密技术解析
Tla+ introductory tutorial (1): introduction to formal methods
Redis入门完整教程:GEO
Attack and defense world misc advanced area Hong
MYSQL架构——逻辑架构
剑指 Offer 65. 不用加减乘除做加法
【ODX Studio編輯PDX】-0.2-如何對比Compare兩個PDX/ODX文件
Mongodb aggregation operation summary
Redis入門完整教程:Pipeline
One of the commonly used technical indicators, reading boll Bollinger line indicators
A complete tutorial for getting started with redis: Pipeline