当前位置:网站首页>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 .
边栏推荐
- Redis入门完整教程:Redis Shell
- Sword finger offer 68 - ii The nearest common ancestor of binary tree
- A complete tutorial for getting started with redis: redis shell
- Google Earth Engine(GEE)——基于 MCD64A1 的 GlobFire 日常火灾数据集
- [try to hack] wide byte injection
- Redis的持久化机制
- [odx Studio Edit pdx] - 0.2 - Comment comparer deux fichiers pdx / odx
- Serial port data frame
- Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
- How to send a reliable request before closing the page
猜你喜欢
Redis入门完整教程:键管理
Mongodb aggregation operation summary
【图论】拓扑排序
[OpenGL] note 29 anti aliasing (MSAA)
[roommate learned to use Bi report data processing in the time of King glory in one game]
Attack and defense world misc master advanced zone 001 normal_ png
Locust performance test - environment construction and use
Hit the core in the advanced area of misc in the attack and defense world
Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
On-off and on-off of quality system construction
随机推荐
云服务器设置ssh密钥登录
Redis入门完整教程:HyperLogLog
【图论】拓扑排序
Is Huatai Securities a nationally recognized securities firm? Is it safe to open an account?
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
Analysis of environmental encryption technology
Attack and defense world misc advanced grace-50
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
[OpenGL] note 29 anti aliasing (MSAA)
Attack and defense world misc advanced area ditf
攻防世界 MISC 进阶区 hong
Sobel filter
模拟摇杆控制舵机
Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
Sword finger offer 68 - I. nearest common ancestor of binary search tree
The table is backed up in ODPs. Why check m in the metabase_ Table, the logical sizes of the two tables are inconsistent, but the number of
攻防世界 MISC 进阶区 can_has_stdio?
Analog rocker controlled steering gear
Wake up day, how do I step by step towards the road of software testing