【HTML+CSS兼容性】 li中插入img元素之间存在空隙BUG问题+解决方案 前端零基础必须知道的事情!

news/2025/2/21 4:52:28/

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

场景问题描述

环境测试: Chrome、Edge、Opera、FireFox

举个栗子

当你在li元素中直接放入图片img元素之后, 默认就会出现一个bug, 也就是图片显示相互之间存在间隙,

即便是你把所有元素的内外边距都清除之后,还是存在这个问题!

代码案例

html

<ul><li><img src="img/test.jpeg" width="100"/></li><li><img src="img/test.jpeg" width="100"/></li><li><img src="img/test.jpeg" width="100"/></li>
</ul>

css

* {margin: 0px;padding: 0px;
}
ul > li {border: 1px solid red;
}

如图

问题分析

首先,其实我们要明白一点,其实这里不一定就是li元素的问题, 很多人以为是li元素导致的,所以就拼了老命去设置li元素, 当然这样的确也是可以解决问题的,但是没有找准重点!

你不信? 那么你把li元素 ul元素都去掉,再去看看效果

如图

所以从上图看,虽然说li元素也有默认的行间距,即便是你去掉了li这些元素的内外边距,间隙依旧是存在的!

那么这是为什么呢?

解释

这主要是由于img图片默认的垂直对齐方式行间距的影响

默认情况下,图片的vertical-align属性值为baseline 简单的说也就是因为这个属性产生的间隙

那么问题来了,那么我怎么去验证一下img图片的vertical-align属性默认值就为baseline呢?

**提示: **

关于baseline(基线)是什么意思,还有包括顶线、中线、基线、底线、x-height、ex、内联盒模型、行距这些概念我这里就不过多赘述了,之前我也发布过对这些详细研究之后的总结文章,有兴趣的朋友可以去看看,相当精彩!

搜索标题如下:

【我确信你还没有完全搞明白它的含义,熬夜整理了一万多字的line-height详细总结,还看不懂那我真的要跪了!】

回到正题, 如果你实在是不信,也可以反向的去测试一下,

比如说你就给img元素 直接加上一个vertical-align:baseline 看看效果 是不是一样的

img{vertical-align: baseline;
}

相信你看到的结果还是有间隙的,对吧

所以对于大多数浏览器来说,vertical-align:baseline 就是 img 元素的默认垂直对齐方式

总之就因为图片的vertical-align属性值为baseline,导致图片在li元素中与文本的基线对齐,从而引起空隙!

解决方案

方法1

我们可以直接通过自己的需求设置img元素的vertical-align属性为top、middle、bottom

这样让图片在li元素顶部对齐居中对齐,从而消除空隙

img{vertical-align: middle;
}

方法2

设置img元素父级容器font-size:0 也可以解决间隙问题, 比如我这里的父级容器就是li元素

ul > li {border: 1px solid red;font-size: 0;
}

通过调整li元素font-size属性为0,可以去除li元素的默认行间距

那么这是为什么呢?

原因如下:

我们将li元素font-size属性设置为0的目的是为了去除li元素默认的行间距

在默认情况下,li元素会有一个默认的行高,即使没有文本内容也会存在一定的空隙,

注意:有些人说设置ul元素的line-height:0这种方式我不太推荐!

通过将font-size属性设置为0,可以让li元素的文本大小为0,从而使行高为0,进而消除了li元素的默认行间距,这样,即使li元素中没有文本内容,也能够达到去除空隙的效果。

但是设置font-size属性为0会影响li元素自身的文本, 可能子元素中的文字大小也会被影响。

所以如果需要保留li元素内部的文字或其他内容的显示,可以通过给子元素重新设置合适的font-size属性来解决这个问题!

代码如下

* {margin: 0px;padding: 0px;
}ul > li {border: 1px solid red;font-size: 0;
}ul > li>span{font-size: 12px;
}img{vertical-align: bottom;
}

方法3

你也可以给img元素设置为块级元素 或者 浮动元素,也是可以解决间隙问题, 使图片与文本紧密排列,从而解决空隙问题,然后根据具体需求继续调整图片的位置即可!

img{display:block;
}

效果

通过上述方法 我们修改之后,就可以基本上解决间隙的问题了!

如图

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇


http://www.ppmy.cn/news/647030.html

相关文章

RA4M2开发(4)----读取HS3003数据,并在OLED上显示,串口打印

概述 HS3003是一种数字式温湿度传感器&#xff0c;可以测量环境中的温度和湿度。读取HS3003的数据需要连接传感器到一个数据采集系统&#xff0c;一般是微处理器或者单片机。以下是一个简单的读取HS3003数据的概述&#xff1a; 连接电路&#xff1a;将HS3003传感器连接到微处…

PHY M2

一些芯片资料常常遇到MAC MODE 和PHY MODE 不知什么意思&#xff1f; 一般以太网芯片中涉及&#xff0c;一般交换芯片&#xff08;比如ks8993吗&#xff0c;8305sb等&#xff09;可以选择两种模式&#xff0c;mac和phy。 应该就是针对不同的外部接口采用的不同模式吧&#xf…

Renesas瑞萨RA4M2和STM32 CAN通信

刚好拿到一块瑞萨开发板&#xff0c;捣鼓玩下CAN&#xff0c;顺便试下固件升级。 A4M2 工程创建 详细可以参考&#xff0c;我之前写的文章 Renesa 瑞萨 A4M2 移植文件系统FAT32 CAN0 配置信息&#xff0c;使能FIFO&#xff0c;接收标准帧 ID为0x50&#xff0c;数据帧。 代…

【算法】Reconstruct a 2-Row Binary Matrix 重构 2 行二进制矩阵

文章目录 Reconstruct a 2-Row Binary Matrix 重构 2 行二进制矩阵问题描述&#xff1a;分析代码 Tag Reconstruct a 2-Row Binary Matrix 重构 2 行二进制矩阵 问题描述&#xff1a; 给你一个 2 行 n 列的二进制数组&#xff1a; 矩阵是一个二进制矩阵&#xff0c;这意味着…

Flink 自定义源算子之 读取MySQL

1、功能说明&#xff1a; 在Flink 自定义源算子中封装jdbc来读取MySQL中的数据 2、代码示例 Flink版本说明&#xff1a;flink_1.13.0、scala_2.12 自定义Source算子&#xff0c;这里我们继承RichParallelSourceFunction&#xff0c;因为要使用open方法来初始化数据库连接对…

debian10新建文档_图解Debian 10(Buster)安装步骤

Debian 项目发布了它的最新稳定版 Debian 10&#xff0c;其代号是 “Buster”&#xff0c;这个发布版将获得 5 年的支持。Debian 10 可用于 32 位和 64 位系统。这个发布版带来很多新的特色&#xff0c;列出下面一些特色&#xff1a; 引入新的 Debian 10 的主题 “FutureProtot…

三星台式机计算机编号怎么看,[图文解析]手把手教你如何看懂硬盘编号

硬盘作为电脑传统三大零配件之一&#xff0c;直接负责存储用户的全部数据资料&#xff0c;一旦损坏或者出现故障&#xff0c;后果将非常严重。同时&#xff0c;硬盘在IT配件里算是一个精密产品&#xff0c;制造难度比内存、板卡等高出许多。硬盘内部是由机械和电子两大部件组成…

Ubuntu20.04安装详细图文教程(双系统)

Ubuntu安装 前言 最近想把自己开发环境换成linux的&#xff0c;查了一下还是ubuntu桌面比较美观并且作为生产系统生态良好&#xff0c;决定使用ubuntu。开始了着手查找安装Ubuntu双系统的方法。安装有三种&#xff1a; 虚拟机安装wubi安装U盘安装 第一种发挥不出硬件本身的…