HTML + CSS 连载 | 61 - 行内元素的间隙处理

110 阅读2分钟

html+css.jpeg

一、行内元素的间隙处理

在编写 HTML 时,多个行内级元素之间会有一定的空隙,比如多个 span 元素之间就有一定的空隙,常见一个 HTML 页面,使用一个 div.box 包裹多个 span 元素,具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    span {
      background-color: orange;
    }
  </style>
</head>
<body>
  <div class="box">
    <span>aaa</span>
    <span>bbb</span>
    <span>ccc</span>
  </div>
</body>
</html>

在浏览器中打开 HTML 页面,效果如下:

image.png

可以看到三个 span 元素之间是存在一定的空隙的,实际上这个空隙是由于在编写 HTML 中的 span 出现的换行符导致的。

因此我们可以将三个 span 写在同一行,去除 HTML 代码中 span 之间的换行符就可以去除页面上 span 元素之间的空隙了,修改 HTML 代码为如下形式:

<div class="box"><span>aaa</span><span>bbb</span><span>ccc</span></div>

刷新浏览器,效果如下:

image.png

可见 span 之间的空隙确实被去除掉了,但是这种方式不太合适,降低了代码的可阅读性。

还有第二种方式可以去除 span 元素之间的空隙,首先将 HTML 代码恢复为原来的形式:

<body>
  <div class="box">
    <span>aaa</span>
    <span>bbb</span>
    <span>ccc</span>
  </div>
  <!-- <div class="box"><span>aaa</span><span>bbb</span><span>ccc</span></div> -->
</body>

第二种方式取出 span 元素之间的空隙可以设置 div.boxfont-size 为 0,并且在 span 中把 font-size 在设置回来,具体代码如下:

.box {
  font-size: 0;
}

span {
  background-color: orange;
  font-size: 16px;
}

刷新浏览器,效果如下:

image.png

这样的方式也可以实现去除 span 元素之间的空隙,这是因为行内级元素默认是基于其父元素的字体大小进行布局的,而如果将父元素的字体大小设置为0,就会导致子元素也没有了基准字体大小,从而消除了它们之间的空隙。

前面两种方式都可以去除 span 元素之间的空隙,但是这个空隙并不可控,我们可以通过浮动的方式来消除 span 元素之间的空隙。

取消 font-size 的设置,并且给 span 元素设置左浮动,具体代码如下:

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

span {
  background-color: orange;
  /* font-size: 16px; */
  float: left;
}

刷新浏览器,效果如下:

image.png

可以看到已经成功的消除了间隙,并且我们还可以在此基础上通过 maring 外边距来控制他们之间间隙的大小,比如设置 margin-left 为 5px:

    span {
      background-color: orange;
      /* font-size: 16px; */
      float: left;
      margin-right: 5px;
    }

刷新浏览器,效果如下:

image.png

通过给子元素设置统一方向的浮动就可以去除空隙,并且可以通过外边距自由的控制空隙的大小。

当然除了上面三种方式外还可以通过 flex 布局的方式来去除空隙。