h5 lazy loading interface IntersectionObserver API

reference

Code examples

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Lazyload 3</title>
	<style>
	    img {
    
    
		display: block;
		margin-bottom: 50px;
		width: 800px;
	    }
    </style>
</head>
<body>
    <img src="images/loading.gif" data-src="images/1.png">
    <img src="images/loading.gif" data-src="images/2.png">
    <img src="images/loading.gif" data-src="images/3.png">
    <img src="images/loading.gif" data-src="images/4.png">
    <img src="images/loading.gif" data-src="images/5.png">
    <img src="images/loading.gif" data-src="images/6.png">
    <img src="images/loading.gif" data-src="images/7.png">
    <img src="images/loading.gif" data-src="images/8.png">
    <img src="images/loading.gif" data-src="images/9.png">
    <img src="images/loading.gif" data-src="images/10.png">
    <img src="images/loading.gif" data-src="images/11.png">
    <img src="images/loading.gif" data-src="images/12.png">
    <script>
	function query(selector) {
    
    
	    return Array.from(document.querySelectorAll(selector));
	}
	let io = new IntersectionObserver(function(items) {
    
    
	    items.forEach(function(item) {
    
    
		var target = item.target;
		if(target.getAttribute('src') == 'images/loading.gif') {
    
    
		    target.src = target.getAttribute('data-src');
		}
	    })
	});
	query('img').forEach(function(item) {
    
    
	    io.observe(item);
	});
    </script>
</body>
</html>
  • IntersectionObserver passes in a callback function, which will be executed when it observes that the element collection appears.
  • io.observe is the element to be observed, which needs to be added one by one.
  • io manages an array. When an element appears or disappears, the element is added or deleted from the array and the callback function is executed.

Guess you like

Origin blog.csdn.net/qq_35606400/article/details/130369831