行内元素默认间距源于HTML换行符和空格被浏览器解析为一个空格字符,并依font-size和line-height渲染;font-size:0+子级重置字号或display:flex+gap是稳定解决方案。
行内元素默认间距从哪来
本质是换行符和空格被浏览器解析成一个空格字符,再按
和
渲染出物理宽度。WebKit(Chrome/Safari)和Gecko(Firefox)对空白字符的折叠与渲染细节略有差异,导致相同HTML在不同内核下
看起来不一致——这不是bug,是规范允许的行为。
哪怕只写
,中间没空格,但换行本身就会产生间隙
能干掉这个间隙,但会连带让子元素文字消失,必须重置子级
负
(如
)看似直接,但数值依赖字体、字号、DPI,跨设备极易失效
用
清空父容器空白
这是最稳定、兼容性最好的方案,适用于
包裹多个
/
/
等行内/行内块场景。关键不是“设为0”,而是“父子字号解耦”。
给父容器设
,彻底消除空白字符的渲染基础
所有子行内元素必须显式声明
(如
),否则文字不可见
注意
仍生效,若子元素有基线对齐,默认可能留出底部缝隙
IE8+、Chrome 4+、Firefox 2+ 全支持,无兼容性风险
用
替代行内布局
当目标是水平排列且需要精确控制间距时,放弃
改用
,从根源上绕开空白问题。这不是“修复”,而是换更可控的模型。
父元素设
,子元素自动无视HTML中的换行与空格
用
属性统一控制间隔,比负边距语义清晰、响应友好
老版本浏览器(如IE10/11)需用
前缀,但
在IE中完全不支持,得回退到
若子元素需换行,加
,不影响间隙逻辑
为什么不用
或
这两个属性作用对象是字符/单词,不是HTML结构间隙。设
会让文字挤在一起,但无法消除
之间的空白;
对无空格连接的行内元素基本无效。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
它们只影响文本内容渲染,不干预DOM节点间的布局间隙
在字体非等宽时,负值可能导致字符重叠,可读性下降
移动端高DPI屏下,-1px可能被渲染为0.5px,效果不稳定
一旦父容器有
,这些属性还会被干扰
实际项目里最容易漏的是:设了
却忘了给子元素重置字号,或者用了
但没处理
导致小屏下内容溢出。间隙问题看着小,根子在渲染模型差异,硬调像素值只会越调越乱。
font-sizeline-heightmarginABfont-size: 0font-sizemarginmargin-right: -4pxfont-size: 0divspanaimgfont-size: 0font-size16pxvertical-align
左
中
右
display: flexinline-blockflexdisplay: flexgapflexboxgapmarginflex-wrap: wrap.container {
display: flex;
gap: 8px;
}
.container > * {
flex: none; /* 防止span被拉伸 */
}letter-spacingword-spacingletter-spacing: -1pxspanword-spacingtext-align: justifyfont-size: 0flexflex-shrink