Image - 体积最小的 base64 encode 1*1透明图片,透明背景图片base64编码

背景

前端开发时,有些<img>标签的src属性的值来源于接口,在接口获取结果之前,这个src应该设置为什么呢?

误区:设置为#

有人把src设置为<img src="#" />

这是有问题的,浏览器解析时,遇到#就会去把当前的URL再获取一遍(通常会拿到一个HTML文档,就是当前页面的HTML文档),然后赋值给这个图片,但是图片解析失败,图片就展示了报错。

总结一下,有2个问题:

  1. 当前URL被多加载了一遍,浪费了流量。
  2. 图片展示为加载失败,控制台Console也会提示报错。

image.png

误区:设置为空字符串或不设置

这一点比设置为#好很多,不存在上述问题。

在Mac电脑下,<img>只是个空的占位符,并无异样。但是Windows上、手机上一些浏览器兼容并不好,会出现灰色边框,你需要加个CSS样式补救一下:

img[src=""], img:not([src]) { opacity:0; 
}

一种解决方案:Loading态

在React或Vue中,你可以方便的设置Loading状态,当API请求不成功时,不展示那个<img>标签,请求拿到结果后,再展示<img>。或者预先设置一个“加载中”的图片给<img>

这是现代前端开发都会采用的方案。

另一种解决方案:用 1 * 1 透明图片

如果你有一些原因,不想使用Loading态,那么你可以先给<img>的src用base64编码设置一个 1 * 1 的透明图片,这样就规避了各种样式问题了。

  • 用大小1 * 1就是为了保证够小;
  • 用base64编码就是为了避免多余的网络请求开销;
  • 用透明图片就是为了不影响现有的背景样式,让用户以为这里暂时没东西。

如何最小呢?主要试试PNG、GIF、WEBP格式就可以了(JPG不支持透明)。

欢迎收藏,以后备忘。

GIF(最稳定)

78个字符,不存在兼容性问题。推荐使用。

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">

GIF(最短)

74个字符,但存在兼容性问题,不建议用。

<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">

PNG(比较长)

114个字符,太长了,不建议用。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=">

WEBP(比较长)

123个字符,太长了,不建议用。

<img src="data:image/webp;base64,UklGRkIAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAIAAAAAAFZQOCAaAAAAMAEAnQEqAQABAACADiWkAANwAP7/YBgAAAA=">

SVG(不是1*1)

64个字符,使用空白SVG实现,但是SVG不指定大小的话,尺寸不是1*1。

<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'/%3E">

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hyperledger Fabric 权限策略和访问控制

访问控制是区块链网络十分重要的功能&#xff0c;负责控制某个身份在某个场景下是否允许采取某个操作&#xff08;如读写某个资源&#xff09;。 常见的访问控制模型包括强制访问控制&#xff08;Mandatory Access Control&#xff09;、自主访问控制&#xff08;Discretionar…

LabVIEW在旋转机械故障诊断中的随机共振增强应用

在现代工业自动化领域&#xff0c;准确的故障诊断对于保障机械设备的稳定运行至关重要。传统的故障检测方法往往因噪声干扰而难以捕捉到微弱的故障信号。随着LabVIEW在数据处理和系统集成方面的优势日益凸显&#xff0c;其在旋转机械故障诊断中的应用开始发挥重要作用&#xff…

Javaweb之Mybatis的动态SQL的详细解析

3. Mybatis动态SQL 3.1 什么是动态SQL 在页面原型中&#xff0c;列表上方的条件是动态的&#xff0c;是可以不传递的&#xff0c;也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中&#xff0c;我们会看到&#xff0c;我们将三个条件直接写死了。 如果页面…

APP广告变现技术——广告分层(瀑布流)

广告变现必不可少的广告来源就是AdNetwork&#xff0c;开发者要想让应用在广告变现上获取更多的收益&#xff0c;需要接入更多的ADNetwork&#xff0c;把每一个广告位卖给出价最高的平台&#xff0c;那是如何做到的&#xff1f; 开发者接入多家广告源后&#xff0c;流量应该怎…

实战环境搭建-linux下安装悟空CRM

下载地址如下: 链接:https://pan.baidu.com/s/1OI9EA8Nc8ymWlERS9i0vjg?pwd=ws5c 提取码:ws5c 上传crm的程序包,如下图: 输入 unzip 72crm-java-master.zip 进行解压 create database crm9; use crm9; source /opt/72crm-java-master/docs/crm9.sql 修改/home/wukongcr…

Elasticsearch:升级到 elasticsearch-py 8.x 的 10 个理由

作者&#xff1a;来自 Elastic 公司 Quentin_Pradet 早在 2022 年 2 月&#xff0c;当 Elasticsearch 8.0 发布时&#xff0c;Python 客户端也发布了 8.0 版本。 它是 7.x 客户端的部分重写&#xff0c;并附带了许多不错的功能&#xff08;概述如下&#xff09;&#xff0c;但也…

SpringBoot请求参数加密、响应参数解密

SpringBoot请求参数加密、响应参数解密 1.说明 在项目开发工程中&#xff0c;有的项目可能对参数安全要求比较高&#xff0c;在整个http数据传输的过程中都需要对请求参数、响应参数进行加密&#xff0c;也就是说整个请求响应的过程都是加密处理的&#xff0c;不在浏览器上暴…

Spark---RDD(Key-Value类型转换算子)

文章目录 1.RDD Key-Value类型1.1 partitionBy1.2 reduceByKey1.3 groupByKeyreduceByKey和groupByKey的区别分区间和分区内 1.4 aggregateByKey获取相同key的value的平均值 1.5 foldByKey1.6 combineByKey1.7 sortByKey1.8 join1.9 leftOuterJoin1.10 cogroup 1.RDD Key-Value…

《罗素论教育》笔记

目录 全书架构 书简介 经典摘录 一、教育的理想 教育的基本原理 教育的目的 二、品性的教育 一岁前的教育 主要是2岁到6岁的教育 三、智力教育 14岁前的课程安排 最后的学年 大学教育 四、结束语 全书架构 书简介 经典摘录 一、教育的理想 教育的基本原理 1、我…

vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐html数据解析&#x1f496; html字符串转为html对象&#x1f496; 深度遍历html对象内容 ⭐echarts 树图的渲染&#x1f496; 处理html内容为树状结构&#x1f496; 渲染树状图&#x1f496; inscode代码块 ⭐总结⭐结束 ⭐前言 大…

【面试高频算法解析】算法练习5 深度优先搜索

前言 本专栏旨在通过分类学习算法&#xff0c;使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目&#xff0c;帮助您深度理解每种算法&#xff0c;避免出现刷了很多算法题&#xff0c;还是一知半解的状态 专栏导航 二分查找回溯&#xff08;Backtracking&…

湖南大学-数据库系统-2017期末考试解析

【写在前面】 这是2017年的卷子&#xff0c;复习备考的时候做了并与同学校对了答案。答案仅供参考。这张难度不大&#xff0c;比起前一年的并没有增加什么知识点。这一年好像没有简答题。 一、 单选题&#xff08;每小题 2 分&#xff0c;共 20 分&#xff09; 1 、数据库的概…