6.4 盒子的显示区域与占据区域

盒子的显示区域指看到的元素的位置与大小,即通过开发者工具查看盒子的页面显示。

示例1:div没有设置宽度。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小步教程</title>

    <style>
        body{
            margin: 0;
        }
        
        .div1 {
            /* width: 220px; */
            height: 30px;
            padding: 20px;
            border: 5px solid #0aaa76;
        }
    </style>
</head>

<body>
    <div class="div1">div1 小步教程 xiaobuteach.com</div>
    <span class="span1">span1 小步教程 xiaobuteach.com</span>
</body>

</html>

开发者工具查看盒子的页面显示。div1盒子的显示区域是一整行。

img

当前场景下, 盒子的显示区域与占据区域一致。


2、盒子的占据区域

当前元素的占据区域(位置与大小)决定后续元素的位置,简称占位。上述示例,dv1的占据区域与显示区域完全相同。盒子的占据区域与显示区域有时并不相同。

示例2:div设置宽度时,显示区域与占据区域不同。上述代码添加width属性(取消相应注释),运行效果如下。

img

div1的显示区域是上图绿色标记区域,并没有显示整行。下方span1仍然换行,说明div1占据区域是整行。此时,显示区域与占据区域并不相同。一个元素的占据区域不能通过它的显示位置分析,需结合它周围元素位置共同分析推算。


示例3: span设置盒子属性时,显示区域与占据区域不同。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小步教程</title>
    <style>
        .span1 {
            background-color: #eee;
        }

        .span1-1 {
            color: #0aaa76;
        }

        .span1-2 {
            padding: 5px;
            border: 5px solid #7030a0;
            background-color: #ddd;
            color: #4aa6fc;
        }

        .span1-3 {
            color: #ed7d31;
        }
    </style>
</head>

<body>
    <div class="div1">div1 小步教程 xiaobuteach.com</div>
    <div class="div2">
        <span class="span1-1">元素1</span>
        <span class="span1-2">元素2</span>
        <span class="span1-3">元素3</span>
    </div>
    <div class="div3">div3 小步教程</div>
</body>

</html>

运行效果

img

“元素2”不太正常,显示区域较大,但div2与div3的位置并没有随着它的显示区域相应下移。“元素2”占据区域很小,与没有设置padding与border时一致,而显示区域较大,所以造成与上下元素的重叠。这个分析过程即:通过div1、元素1~3、div3共同分析推算元素2的占位。

实际项目中,占据区域与显示区域不同的情况经常发生,不属于错误,根据页面需求合理运用。