7.6 display属性常用单值

display属性常用单值如下。

(1)基础:inline、block、table 、flex、grid;

(2)inline组合系列:inline-block、inline-table、inline-flex、inline-grid;

(3)隐藏:none;

(4)其它值:list-item 、table-系列;

(5)声明式的新建BFC:flow-root。

不是所有display单值写法都能用双值写法替换,例如none。


7.6.1 list-item

list-item是特殊的display属性值。特殊性包括两个方面:它只适用于li标签,li标签默认display:list-item;它的完整写法需display三值写法。

list-item = block flow list-item

list-item基本与display: block等价,前两个值与display: block完全相同。list-item是block的扩展,list-item结合list-style实现前面圆圈等符号。所以页面布局采用div标签最多,其次是就是ul-li标签。

示例代码

<body>    
    <li>小步教程 xiaobuteach.com</li>
    <li style="display:list-item;">小步教程 xiaobuteach.com</li>
    <li style="display:block flow list-item;">小步教程 xiaobuteach.com</li>
</body>

运行效果如下。三种写法完全等价。

img


7.6.2 inline组合系列

inline-系列包括:inline-block、inline-table、inline-flex、inline-grid。本质是display-outside值inline与display-inside各值的组合。

inline-block 等价写法 inline flow-root
inline-table 等价写法 inline table
inline-flex 等价写法 inline flex
inline-grid 等价写法 inline table

inline-block在项目比较常用,后3个基本不用,用它们不如在父元素直接设置相应布局。

inline-block特点:外部表现是inline盒子,内部表现是block盒子。所以它在一行内有inline的特点:不换行。它的内部有block的特点:内部能够包含多个block元素与inline元素,并且本身能够设置宽度。

示例代码

<!DOCTYPE html>
<html style="display: block flow-root;">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小步教程</title>

    <style>
        body{
            margin-top: 0;
        }

        .box1 {
            display: inline-block;
            width: 200px;
            height: 70px;
            padding: 10px;
            border: 5px solid #0aaa76;
            margin-left: 10px;
            margin-right: 10px;
            margin-top: 10px;
            margin-bottom: 10px;
        }

    </style>
</head>
<body >    
    <span class="box1">
        <div>inline-block元素1 第1行</div>
        <div>第2行</div>
        <div>第3行</div>
    </span>
    <span class="box2">元素2</span>
    <div class="box3">小步教程 xiaobuteach.com</div>
</body>
</html>

运行效果

img

开发者工具查看inline-block盒子的各属性设置均生效,包括:width、height、各方向margin。

默认inline-block值的常用标签:input、button、select、textarea。表单元素设计成inline-block的两个原因:可设置宽高,看上去是一个元素,实际内部包含浏览器自动创建的其它元素,例如下拉框select自带箭头。

inline-block的双值等价代码:inline flow-root,内部自动新建BFC。inline-block详细内容见第9章行内IFC模型。


7.6.3 none

none值表示该元素以及后代元素不生成盒子,盒子在流式布局没有占位。

display:none与visibility:hidden的区别。visibility:hidden也不显示,但会创建盒子,会在流式布局进行占位。

示例

<body>
    <div>
        <span>小步教程</span>
        <span style="display: none;">看的到我吗?有占位吗?</span>
        <span>xiaobuteach.com</span>
    </div>

    <div>
        <span>小步教程</span>
        <span style="visibility: hidden;">看的到我吗?有占位吗?</span>
        <span>xiaobuteach.com</span>
    </div>
</body>

运行效果

img


7.6.4 flow-root

flow-root表示元素生成盒子是块容器block container盒子,内部新建BFC。