【原生js案例】如何让你的网页实现图片的按需加载

按需加载,这个词应该都不陌生了。我用到你的时候,你才出现就可以了。对于一个很多图片的网站,按需加载图片是优化网站性能的一个关键点。减少无效的http请求,提升网站加载速度。

感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析,讲解,该系列还在不断更新中。

实现效果

  • 带loading效果请添加图片描述
  • 完整版效果

在可视区域外的图片还显示的是loading图片
在这里插入图片描述
当图片进入到可视区域的时候,就替换成了对应真实的图片。
请添加图片描述

代码实现

<ul id="ul1">
    <li>
      <img _src="./images/1.jpg" alt="" srcset="" src="./images/9.gif">
    </li> 
    <li>
        <img _src="./images/2.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/3.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/4.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/5.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/6.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/7.jpg" alt="" src="./images/9.gif">
    </li>
    <li>
      <img _src="./images/1.jpg" alt="" srcset="" src="./images/9.gif">
    </li> 
    <li>
        <img _src="./images/2.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/3.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/4.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/5.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/6.jpg" alt="" src="./images/9.gif">
    </li> <li>
      <img _src="./images/7.jpg" alt="" src="./images/9.gif">
    </li>
   </ul>
  • UI页面美化
*{
  margin: 0;
  padding: 0;
 }
 ul{
  list-style: none;
 }
 li{
  width: 300px;
  height: 250px;
  float: left;
  margin: 10px 0 0 10px;
 }
 
 img{
  width: 100%;
  height: 100%;
 }
  • 核心js脚本
var oUl = document.getElementById('ul1');
 var aImg = oUl.getElementsByTagName('img');


 showImage()
 function showImage(){
  const sTop = document.documentElement.scrollTop || document.body.scrollTop;
  for(var i=0;i<aImg.length;i++){
    if(getTop(aImg[i]) < sTop + document.documentElement.clientHeight && !aImg[i].isLoad){
      aImg[i].src = aImg[i].getAttribute('_src');
      aImg[i].isLoad = true;
    }
  }
 }

这样,我们就实现了一个图片懒加载按需加载的效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937157.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用于卫星影像间接RPC模型精化的通用光束法平差方法

引言 介绍了通用RPC模型的表达式&#xff0c;which has been down to death 描述了RPC模型产生误差的原因——主要与定义传感器方位的姿态角有关。 每个影像都会对应一个三维点云&#xff0c;但是对同一地物拍摄的不同影像对应出来的三维点云是不一样的&#xff0c;所以才需…

搭建Tomcat(一)---SocketServerSocket

目录 引入1 引入2--socket 流程 Socket&#xff08;应用程序之间的通讯保障&#xff09; 网卡(计算机之间的通讯保障) 端口 端口号 实例 client端 解析 server端 解析 相关方法 问题1&#xff1a;ServerSocket和Socket有什么关系&#xff1f; ServerSocket Soc…

玩转个性地图样式!蜂鸟视图蜂鸟云主题编辑器正式上线

当地图不再只是冷冰冰的数据呈现&#xff0c;而是具有美感、适应多场景需求的设计作品时&#xff0c;地图应用的价值也随之提升。 蜂鸟视图推出全新“主题编辑器”功能&#xff0c;助你轻松定制个性化地图样式&#xff0c;赋予地图更多创意与生命力&#xff01; 一、主题编辑器…

【Figma_01】Figma软件初始与使用

Figma初识与学习准备 背景介绍软件使用1.1 切换主题1.2 官方社区 设计界面2.1 创建一个项目2.2 修改文件名2.3 四种模式2.4 新增界面2.5 图层2.6 工具栏2.7 属性栏section透明度和圆角改变多边形的边数渐变效果描边设置阴影等特效拖拽相同的图形 背景介绍 Ul设计:User Interfa…

MATLAB中all,any函数的应用

all表示要查的范围内全非 0 0 0返回 1 1 1&#xff0c;否则返回 0 0 0 any表示要查的范围内有一个非 0 0 0返回 1 1 1&#xff0c;否则返回 0 0 0 向量和矩阵都可以使用&#xff0c;在矩阵中&#xff0c;可以通过1(看列)或2(看行)设置维度 a l l all all和 a n y any any函数…

.NET 9 已发布,您可以这样升级或更新

.NET 9 已经发布&#xff0c;您可能正在考虑更新您的 ASP.NET Core 应用程序。 我们将介绍更新应用程序所需的内容。从更新 Visual Studio 和下载 .NET SDK 到找出可能破坏应用程序的任何重大更改。 下载 .NET 9 SDK 这些是下载 .NET 9 SDK 所需的步骤。 更新 Visual Studi…

服务器数据恢复—热备盘上线过程中硬盘离线导致raid5阵列崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; 两组分别由4块SAS接口硬盘组建的raid5阵列&#xff0c;两组raid5阵列划分LUN并由LVM管理&#xff0c;格式化为EXT3文件系统。 服务器故障&#xff1a; RAID5阵列中一块硬盘未知原因离线&#xff0c;热备盘自动激活上线替换离线硬盘。在热备盘上…

Mac上使用ln指令创建软链接、硬链接

在Mac、Linux和Unix系统中&#xff0c;软连接&#xff08;Symbolic Link&#xff09;和硬连接&#xff08;Hard Link&#xff09;是两种不同的文件链接方式。它们的主要区别如下&#xff1a; 区别&#xff1a; 硬连接&#xff1a; 不能跨文件系统。不能链接目录&#xff08;为…

PCIe学习笔记

PCIE高速串行数据总线 当拿到一块板子 比如你要用到PCIE 首先要看这块板子的原理图 一般原理图写的是 PCI express 表示PCIE 以下是Netfpga为例下的PCIE插口元件原理图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/01dc604fbdc847e8998a978c83c7b2eb.png 一般主…

Elasticsearch Kibana (windows版本) 安装和启动

目录 1.安装 2.启动 elasticsearch 3.启动 kibana 1.安装 elasticsearch下载&#xff0c;官网链接&#xff1a; Download Elasticsearch | Elastichttps://www.elastic.co/downloads/elasticsearch kibana下载&#xff0c;官网链接&#xff1a; Download Kibana Free | G…

linux下查看nginx的安装路径

一般会安装在默认位置下&#xff1a;/usr/local/openresty/nginx 或/usr/local/nginx 查看nginx运行进程&#xff0c;mast process 后面一般是nginx 的安装目录 ps -aux|grep nginx执行ls -l /proc/进程号/exe 会打印出安装/运行位置 ps -aux|grep nginx ls -l /proc/进程号/ex…

strongswan构建测试环境

make-testing脚本文件负责构建strongswan的虚拟化测试系统。位于目录strongswan-5.9.14/testing/&#xff0c;需要以管理员身份运行make-testing。生成测试用到的虚拟客户机镜像&#xff0c;KVM虚拟机和虚拟网络的配置文件位于目录:config/kvm。 ~/strongswan-5.9.14/testing$…

以太网链路详情

文章目录 1、交换机1、常见的概念1、冲突域2、广播域3、以太网卡1、以太网卡帧 4、mac地址1、mac地址表示2、mac地址分类3、mac地址转换为二进制 2、交换机的工作原理1、mac地址表2、交换机三种数据帧处理行为3、为什么会泛洪4、转发5、丢弃 3、mac表怎么获得4、同网段数据通信…

噪杂环境(房车改装市场)离线语音通断器模块

一直在坚持&#xff0c;却很难有机会上热门&#xff0c;在现在这个以流量为导向的时代&#xff0c;貌似很难靠所谓的坚守和热爱把产品成功的推向市场了。目前的客户仍然是以老客户为主&#xff0c;应用场景主要是房车改装&#xff0c;根据九客户的需求定制化一些模块。因为没有…

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言&#xff1a; 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果&#xff0c;可以使RecyclerView的边缘在滚动时逐渐淡出或淡入&#xff0c;以提升用户体验。 2.Recyclerview属性&#xff1a; 2.1、requiresFading…

操作系统(10)存储器的层次结构

前言 操作系统存储器的层次结构是一个复杂而有序的系统&#xff0c;它旨在提供不同速度、容量和成本的存储设备&#xff0c;以满足计算机系统中各种数据存取需求。 一、层次结构概述 操作系统存储器的层次结构通常包括多个层次&#xff0c;从高速到低速、从高成本到低成本排列。…

数据库中的代数运算

这些代数基本运算通常被封装在数据库查询语言中&#xff0c;如SQL中的SELECT、FROM、WHERE等子句&#xff0c;使得用户可以更方便地对数据库进行查询和处理。 下面的介绍基于以下两个关系来说明&#xff1a; 传统的集合运算 并&#xff08;∪&#xff09; 合并两个关系中的元组…

9_less教程 --[CSS预处理]

LESS&#xff08;Leaner Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、嵌套规则、混合&#xff08;mixins&#xff09;、函数等功能&#xff0c;使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容&#xff…

Vulhub:Fastjson[漏洞复现]

1.2.24-rce(CVE-2017-18349-Fastjson反序列化) 对于 Fastjson 来说&#xff0c;该漏洞的主要问题在于其1.2.24版本中autotype特性允许任意类的反序列化&#xff0c;因此攻击者通过type指定自定义类并实例化&#xff0c;在特定条件下调用这些类的公共方法。如果一个不受信任的 J…

【AI日记】24.12.13 kaggle 比赛 2-3 大扫除、断舍离、自己做饭

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset参考&#xff1a;kaggle 回归类入门比赛 House Prices - Advanced Regression Techniques内容&#xff1a;构建自己的EDA&#xff08…