HTML内联(行内)元素间的缝隙问题讲解

1,180 阅读1分钟

注意:以下效果用行内块元素展示,实际所有行内元素间都会存在类似的缝隙问题

1. 效果展示

<style>
    div{
        display: inline-block;
        background-color: cornflowerblue;
    }
</style>
<div >我是行内块1</div>
<div >我是行内块2</div>
<div >我是行内块3</div>

效果展示

可以看到行元素(包括行内块元素)之间有个小缝隙。

2. 产生原因

元素被当成行内元素排版的时候,元素之间的空白符(空格、回车换行等)都会被浏览器处理,根据white-space的处理方式(默认是normal,合并多余空白),原来HTML代码中的回车换行被转成一个空白符,所以元素之间就出现了空隙。这些元素之间的间距会随着字体的大小而变化,当行内元素font-size:16px时,间距为8px。

3. 解决方案

根据产生该问题的原因,当我们把上述例子的三个div写在一行那么间隙问题就会消失,但是写成一行难免影响代码的可读性以及优雅度。下面介绍几种其他比较方便的解决方法:

(1)父元素设置font-size为0,子元素单独再设置字体大小。

<div style="font-size: 0">
    <div style="font-size: 16px">我是行内块1</div>
    <div style="font-size: 16px">我是行内块2</div>
</div>

(2)改变其元素类型,使其不再是内联元素。例如让行内块元素设置浮动float(不过需要解决浮动可能带来的其他问题)或者给父元素加上display: flex