h5懒加载接口 IntersectionObserver API

参考

代码案例

<!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 传入一个回调函数,当其观察到元素集合出现时候,则会执行该函数。
  • io.observe 即要观察的元素,要一个个添加才可以。
  • io 管理的是一个数组,当元素出现或消失的时候,数组添加或删除该元素,并且执行该回调函数。

猜你喜欢

转载自blog.csdn.net/qq_35606400/article/details/130369831