CSS div布局 常见问题2 换行

1 原计划目标

外部div1宽度300px;

内部3个子div:通过display:inline-block(不换行)设置成3列;每个宽度100px。

所有div的box-sizing设为border-box。

img


2 实际结果

img

代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" >
    <title>html 布局问题2 换行 | 关关教程</title>

    <style>
        *{
            box-sizing: border-box;
        }

        #div1{
            width: 300px;
        }

        #div1>div{
            display: inline-block;
            width:100px;
            height: 50px;
            border: 1px solid #f00;
            
        }
    </style>
</head>

<body>
    <div id="div1">
        <div >第1列</div>
        <div >第2列</div>
        <div >第3列</div>
    </div>
</body>

</html>

下拉查看答案。












3 分析

当没有使用浮动时,HTML代码里的换行,会被解析成空格。

第1列与第2列之间有一个明显的空格


4 解决方法1

HTML代码的三个子div删除其中换行。

    <div id="div1">
        <div >第1列</div><div >第2列</div><div >第3列</div>
    </div>

这个方法并不现实,所有代码写在一行,代码可读行差到极点。

这也是为什么我们项目里大量使用float的原因,避免类似这种代码,代码里的换行解析成HTML空隔,从而引起距离不能精确控制到每1个像素(px)。


5 解决方法2

3个子div使用左浮,浮动会忽略代码里的换行。