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

5个设为20%的inline-block元素为何其中一个换行?

为什么5个20%宽度的inline-block元素无法在一行显示?

你遇到的问题是inline-block元素之间的空白字符导致的。HTML中元素之间的换行、空格会被渲染成空白,这些空白会占据额外宽度,5个20%的元素加上空白的总宽度就超过了100%,所以最后一个SQL面板被挤到下一行。

下面是几种解决方法:

方法1:消除HTML中的空白字符

把.panel元素的标签连在一起,或者用注释消除它们之间的换行/空格:

<div class="panels">
    <div class="panel">
        <img src="imgs/html.png" alt="HTML Logo">
        <h4>HTML</h4>
    </div><div class="panel">
        <img src="imgs/css.png" alt="CSS Logo">
        <h4>CSS</h4>
    </div><div class="panel">
        <img src="imgs/javascript.png" alt="JavaScript Logo">
        <h4>JavaScript</h4>
    </div><div class="panel">
        <img src="imgs/php.png" alt="PHP Logo">
        <h4>PHP</h4>
    </div><div class="panel">
        <img src="imgs/sql.png" alt="SQL Logo">
        <h4>SQL</h4>
    </div>
</div>

方法2:通过CSS消除空白宽度

给父容器.panels设置font-size: 0,因为空白字符的大小由父元素字体决定,设为0就能消除空白;之后再给.panel恢复字体大小:

.panels{
    width: 100%;
    text-align: center;
    font-size: 0; /* 消除inline-block间的空白 */
}

.panels .panel{
    width: 20%;
    display: inline-block;
    font-size: 16px; /* 恢复子元素字体大小,按需调整 */
}

方法3:使用Flexbox布局(推荐)

Flexbox是现代布局方案,能彻底避免inline-block的空白问题,还能更灵活地控制元素排列:

.panels{
    width: 100%;
    display: flex; /* 启用flex布局 */
    justify-content: center; /* 水平居中元素 */
    /* 如果需要元素之间有间距,添加下面一行 */
    /* gap: 10px; */
}

.panels .panel{
    width: 20%;
    /* 无需再设置display: inline-block */
}

至于你用19%宽度能显示的原因:5个19%元素总宽度是95%,加上空白的宽度刚好不超过100%,但空白的存在会让元素对齐效果差,间距不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:20:54