图片在点击之后

简介: 图片在点击之后

前言

在前端性能优化的话题中,我们经常能够看见,图像延迟加载。

<img href="image.webp" alt="Image description" loading="lazy">

在延迟加载的情况下,只有用户向下滚动,知道出现在用户眼前,图片才开始加载。在面对大量图片的情况下,极大的提高了页面的加载速度。

我们今天不讨论这种情况,讨论一些图片如何在点击的时候才开始加载。

不带src属性使用

对于img标签,浏览器通过是被src中的链接,来请求图片,进而将图片加载到画面中。所以我们可以将src的内容置空,这样浏览器就无法请求图片,然后通过将连接赋值在其他属性下,起到存储图片地址的作用。

<img data-src="图片地址" src="" alt="图片">

这里的图标是浏览器自己生成的。

image.png

document.querySelectorAll("img").forEach((item) => {
  item.addEventListener("click", (event) => {
    const image = event.target.getAttribute("data-src");
    event.target.setAttribute("src", image);
  });
});

这种方法虽然简单易用,但是在图片加载失败的时候,会产生一个破损图像的图标,并且我们也没有方法去修改这个图标,而且我们这里必须设置alt属性,如果不设置的话,破损图标也没法显示。有人可能在想通过css来设置一个图标,类似这样!

img[src$="加载失败的图片"] {
  object-fit: contain;
  outline: 1px solid #ddd;
  outline-offset: -1px;
}

但我想说虽然可以设置一张很小的图片,但是还是要去请求图片,与预想不符合。

使用<a>创建图像

我们选择超链接来试试:

<a href="图片">点击查看图片<a>

这样确实是可以显示图片,但是缺点是,打开的是一个图片的链接。并不符合我们的预期。但是这种方式确实是不

所以我们需要改造他。

我们可以使用 JavaScript 来阻止链接在点击时加载,获取该href链接中的属性,创建一个图像元素,最后将该图像扔到页面上并在完成后删除旧元素:

document.querySelectorAll(".load-image").forEach((item) => {
  item.addEventListener("click", (event) => {
    const href = event.target.getAttribute("href");
    const newImage = document.createElement("img");
    event.preventDefault();
    newImage.setAttribute("src", href);
    document.body.insertBefore(newImage, event.target);
    event.target.remove();
  });
});

相关文章
|
2月前
|
JavaScript
有关vue中两张图片,一个底图一个右上角的图片 点击右上角不触发底图方法
有关vue中两张图片,一个底图一个右上角的图片 点击右上角不触发底图方法
15 0
|
1月前
|
XML 计算机视觉 数据格式
手机点击按钮进行切换图片
手机点击按钮进行切换图片
13 0
|
2月前
|
JavaScript 容器
富文本的图片添加点击放大功能
思路:富文本加载后,dom出全部img元素,然后各自单独添加点击事件
60 3
|
6月前
|
JavaScript 数据库
jQuery点击图片开启,再次点击图片关闭效果
jQuery点击图片开启,再次点击图片关闭效果
19 0
点击选择-图片添加对号(单选)
点击选择-图片添加对号(单选)
uniapp上传预览大图-带删除按钮-摄像机-相册
uniapp上传预览大图-带删除按钮-摄像机-相册
uniapp上传多张图片-带删除按钮查看大图效果demo(整理)
uniapp上传多张图片-带删除按钮查看大图效果demo(整理)
如何利用ps工具,裁量咱的素材小图标和如何获取到大小合适的素材图标呢(各自图标素材集中于一张png图片上)
如何利用ps工具,裁量咱的素材小图标和如何获取到大小合适的素材图标呢(各自图标素材集中于一张png图片上)
143 0
如何利用ps工具,裁量咱的素材小图标和如何获取到大小合适的素材图标呢(各自图标素材集中于一张png图片上)
|
前端开发
点击电脑图标,显示电脑界面。点击相同的二维码图标,显示二维码界面(七)
有时候,在一个地方,放置不同的图标,可以随时切换图标。在切换图标的时候,实际上会相应切换底下的不同的界面。
139 0
点击电脑图标,显示电脑界面。点击相同的二维码图标,显示二维码界面(七)