博客列表 >大神杰作:让站点飞快!懒加载图片案例,噢 my gad!太快啦…

大神杰作:让站点飞快!懒加载图片案例,噢 my gad!太快啦…

张福根一修品牌运营
张福根一修品牌运营原创
2020年11月07日 22:04:56757浏览

作业:懒加载图片

案例效果:

懒加载图片

案例源码:

CSS:

  1. <style>
  2. .container {
  3. width: 600px;
  4. display: grid;
  5. gap: 10px;
  6. grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  7. }
  8. .container img {
  9. width: 100%;
  10. }
  11. </style>

HTML:

  1. <div class="container">
  2. <img src="images/temp.jpg" alt="" data-src="images/img-1.jpg" />
  3. <img src="images/temp.jpg" alt="" data-src="images/img-2.jpg" />
  4. <!-- 中间省略 -->
  5. <!-- 中间省略 -->
  6. <!-- 中间省略 -->
  7. <img src="images/temp.jpg" alt="" data-src="images/img-67.jpg" />
  8. <img src="images/temp.jpg" alt="" data-src="images/img-68.jpg" />
  9. <img src="images/temp.jpg" alt="" data-src="images/img-69.jpg" />
  10. <img src="images/temp.jpg" alt="" data-src="images/img-70.jpg" />
  11. </div>

JS:

  1. <script>
  2. // 1 获取图片
  3. const imgs = document.querySelectorAll(".container img");
  4. // 2. 视口高度
  5. const clientHeight = document.documentElement.clientHeight;
  6. // 3. 监听窗口滚动事件
  7. window.addEventListener("scroll", lazyload, false);
  8. // load: 当页面加载成功时自动执行,将已进入可视区的图片显示出来,不要出现首页空白
  9. window.addEventListener("load", lazyload, false);
  10. // 4. 懒加载的回调
  11. function lazyload() {
  12. // 动态获取滚动高度
  13. let scrollTop = document.documentElement.scrollTop;
  14. // 遍历图片,判断是否进入到可视区域
  15. imgs.forEach((img) => {
  16. // offsetTop: 是图片距离顶部的高度,包括了视口高度和滚动高度的
  17. if (img.offsetTop <= clientHeight + scrollTop) {
  18. img.src = img.dataset.src;
  19. // 如果感觉图片显示太快,可以用定时器来控制一下
  20. setTimeout(() => {
  21. img.src = img.dataset.src;
  22. }, 500);
  23. }
  24. });
  25. }
  26. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议