font-size: 0消除空白字符导致的行内元素额外间距

简介: `font-size: 0` 设置字体大小为0,但是它要实现的效果却不是字体为0看不见,而是消除子行内元素间额外多余的空白。最推荐的方式是,去掉标签之间的空格、换行等空白字符,这也是压缩...

看到有的地方使用了font-size: 0样式,因此特意了解下其作用。

要解决的问题

font-size: 0 设置字体大小为0,但是它要实现的效果却不是字体为0看不见,而是消除子行内元素间额外多余的空白。

html在编写时往往会设置一些适当的缩进、换行(尤其是代码进行格式化),如果元素的displayinline 或者 inline-block或者本身就是行内元素,缩进、换行、空格等字符就会产生空白间隙,导致元素间产生多余的间距,页面显示可能会变形或错乱。

设置 font-size: 0时,子元素必须指定一个 font-size大小,否则内容不会显示。

行内元素之间会如果有空白,将会导致有一个字符的间隙。

解决行内元素之间空隙

以ul和li为例:

最合适的方法就是给li的父元素ul设置: font-size: 0;,给li设置:font-size: xxpx; 如此就可以消除各个元素之间空表间距。

下面以ul>li,分别对照其在html元素紧凑、正常格式化html标签、使用font-size: 0;时,li元素统一使用display: inline-block;,各自元素的表现。

能够很好的看到font-size: 0;消除多余间距的作用

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>font-size 0的作用</title>
    <style>
        *{
            /* padding: 0;
            margin: 0; */
            box-sizing: border-box;
        }
        ul{
            list-style: none;
        }
        li{
            background: rgb(243, 122, 122);
            text-align: center;
            width: 50px;
            height: 40px;
            display: inline-block;
        }

        /* font-size为0 */
        .font-size-0 {
            font-size: 0;
        }

        .font-size-0 * {
            font-size: 1rem;
        }
    </style>
</head>

<body>
    <ul class="font-size-0">
        <p>font-size: 0;消除 display: inline-block; 或 display: inline; 时换行、缩进、空格等产生的空白间距</p>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <ul>
        <p>html中换行、缩进、空格等导致的元素的空白间距</p>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <ul><p>元素间没有换行、缩进、空格等字符</p><li>1</li><li>2</li><li>3</li><li>4</li></ul>
</body>

各自的效果对比如下:

同样的, imgspan<a>超链接等其他行内元素,同样会产生空白间距。尤其是图片间的间隙问题,应该比较常见(并且由于是图片,不用考虑再设置文字大小)。

解决空白字符导致的行内元素间隙的其他办法

除了设置父级font-size为0之外,还可以考虑以下几种办法:

  • 使用letter-spacingword-spacing等属性。比如设置父元素display:table;word-spacing:-1em;word-spacing的负值大小,可具体测试调整。
  • 行内元素添加浮动,如float:left;
  • 行内元素的margin设置为适当的负值,也需要测试调整。比如margin-left:-8px;
最推荐的方式是, 去掉标签之间的空格、换行等空白字符,使其不产生影响。

这也是压缩的最好处理方式,现代的打包工具基本都会清除这些多余的空白字符。

参考

主要转载参考自 font-size: 0的作用和用途

相关文章
|
前端开发
多次请求同一数据接口造成数据混乱问题解决办法
在进行前端开发过程中,经常会遇到需要请求同一个数据接口但不同参数的需求,这种情况下当用户通过页面操作频繁请求该接口,而接口的不同参数响应时间差异较大时,容易引发数据渲染混乱的bug。
2985 0
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
68844 5
详解HTTP四种请求:POST、GET、DELETE、PUT
|
8月前
|
存储 运维 数据挖掘
虚拟化数据恢复—误还原快照导致虚拟机上数据库丢失的数据恢复案例
虚拟化数据恢复环境&故障: vmfs文件系统,存储的数据是SqlServer数据库及其他办公文件。 工作人员误将快照还原,导致了SqlServer数据库数据的丢失,需要恢复原来的SqlServer数据库文件。
201 22
|
11月前
|
敏捷开发 存储 项目管理
办公协同工具哪个最好用?2024年团队选择指南
本文介绍了六款办公协同工具:板栗看板、Trello、Asana、Slack、Microsoft Teams 和 Notion,详细阐述了每款工具的特点、适用场景及优势,帮助团队根据自身需求选择最合适的工具,以提高工作效率和增强团队协作。
办公协同工具哪个最好用?2024年团队选择指南
|
前端开发
css 实用技巧 —— 文字和图标垂直居中对齐(四种方法)
css 实用技巧 —— 文字和图标垂直居中对齐(四种方法)
2955 1
|
Java API 开发者
针对Java开发者的RESTful API设计与实现指南
本文是一份针对Java开发者的RESTful API设计与实现指南。RESTful API采用表述性状态转移(REST)架构风格,提供无状态、统一接口的服务。在Java中,可通过Spring Boot框架快速构建RESTful API,利用Spring MVC处理HTTP请求,并支持数据绑定、验证及异常处理等功能。此外,还介绍了版本控制、安全性加强、文档编写与测试等最佳实践,帮助开发者打造高性能且可靠的API服务。
324 0
|
Web App开发 JavaScript 前端开发
Vue3.0 Composition API和Hooks使用学习文档
Vue3.0 Composition API和Hooks使用学习文档
7688 0
|
小程序 JavaScript 前端开发
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
464 0
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
JavaScript 前端开发 索引
Vue中拖动排序功能,引入SortableJs,前端拖动排序。
Vue中拖动排序功能,引入SortableJs,前端拖动排序。
724 0