You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用inline-block元素并排时容器内出现异常间隙的问题

问题原因与解决方法

你遇到的间隙是inline-block元素的固有特性导致的:浏览器会把HTML代码中inline-block元素之间的换行、空格解析为空白字符,渲染成可见的间隙。

对比你和作者的代码,核心差异很明显:作者给包裹三个inline-block元素的.WrapMiddle容器设置了font-size: 0——空白字符的大小由父元素字体大小决定,设为0后,空白字符就不会占据空间,自然消除了间隙。而你的代码里,包裹aside和main的div没有这个设置,所以间隙就出现了。

几种解决办法

方法1:和作者用一样的思路,给父容器设置font-size: 0

给包裹aside和main的div加个类,设置字体大小为0,同时给内部元素恢复字体大小(如果需要显示文字的话):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Layout example</title>
    <meta name="viewport" content="width=device-width" />
    <link rel="stylesheet" href="css/styles.css" />
    <style>
      html,
      body {
        padding:0;
        margin:0;
       }

       header {
        width:100%;
        height:100px;
        background-color:red;
       }

       .content-container {
        height:700px;
        margin: 0 auto;
        font-size: 0; /* 关键:消除空白字符间隙 */
       }

       aside {
        width:29.71%;
        background-color: aqua;
        height:700px;
        display: inline-block;
        font-size: 16px; /* 恢复字体大小,按需调整 */
       }

       main {
        width:40%;
        height: 700px;
        background-color:pink;
        display: inline-block;
        font-size: 16px; /* 恢复字体大小,按需调整 */
       }

       footer {
        width:100%;
        height:200px;
        background-color:blue;
       }
    </style>
  </head>
  <body>
    <div class="Wrap">
       <header></header>
       <div class="content-container">
        <aside></aside>
        <main></main>
        <aside></aside>
       </div>
       <footer></footer>
    </div>
  </body>
</html>

方法2:去掉HTML中的换行/空格

把inline-block元素的代码写在同一行,去掉中间的空格和换行,让浏览器解析不到空白字符:

<div>
  <aside></aside><main></main><aside></aside>
</div>

这种方法不用改CSS,但代码可读性会差一些。

方法3:用Flex布局(更推荐的现代方案)

直接替换成flex布局,完全不会有间隙问题,代码也更简洁:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Layout example</title>
    <meta name="viewport" content="width=device-width" />
    <link rel="stylesheet" href="css/styles.css" />
    <style>
      html,
      body {
        padding:0;
        margin:0;
       }

       header {
        width:100%;
        height:100px;
        background-color:red;
       }

       .content-container {
        height:700px;
        margin: 0 auto;
        display: flex; /* 启用flex布局 */
       }

       aside {
        flex: 0 0 29.71%; /* 等价于固定宽度29.71% */
        background-color: aqua;
       }

       main {
        flex: 0 0 40%; /* 等价于固定宽度40% */
        background-color:pink;
       }

       footer {
        width:100%;
        height:200px;
        background-color:blue;
       }
    </style>
  </head>
  <body>
    <div class="Wrap">
       <header></header>
       <div class="content-container">
        <aside></aside>
        <main></main>
        <aside></aside>
       </div>
       <footer></footer>
    </div>
  </body>
</html>

内容的提问来源于stack exchange,提问作者Diego Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:43:18