CSS display 详解

327 阅读2分钟

本文基本上是作者对 MDN display 这一部分的一个简短的笔记,没有太多的阅读参考价值,建议路过的想要了解这方面内容的读者直接点击链接去往MDN相关页面,那里讲的权威而具体。

1. display的作用

display 主要有两个作用:

  1. 决定元素自身是 block 元素还是 inline 元素
  2. 决定子元素的布局 layout

2. 取值

display 的取值可以有一个,也可以有两个。

如果值是一个,则根据具体的值来决定自身的 display type 或是自己内部的布局模式。

如果值是两个,那么一个决定自身,一个决定内部布局模式,一般情况下是第一个值决定自身的 display type,第二个值决定内部的布局模式,但反过来也是允许的。

3. 取值分类

3.1 outside

这类值决定元素自身的 outer display type,决定其在 flow layout 中的角色

  • block
  • inline

3.2 inside

这类值决定元素内部的布局,即 inner display type

  • flow (处于试验中)

  • flow-root

    该元素自身生成一个BFC

  • table

    元素内部布局类型为表格

  • flex

    元素内部布局类型为 flex

  • gird

    元素内部布局类型为 grid

  • ruby (处于试验中)

    元素内部布局类型为 ruby formatting model (其实就是用来给日语汉字标读音之类的用途)

3.3 List Item

这个值决定元素本身是否被看做一个 list item

  • list-item
<div class="fake-list">I will display as a list item</div>
.fake-list {
  display: list-item;
  list-style-position: inside;
}

list-item.svg

3.4 Internal

一些布局模式如 tableruby 有一个复杂的内部结构,除了父元素需要定义布局模式外,子元素也需要决定它们自身在这个布局模式中是一个怎样的角色。

  • table-row-group

    类似 <tbody>

  • table-header-group

    类似 <thead>

  • table-footer-group

    类似 <tfoot>

  • table-row

    类似 <tr>

  • table-cell

    类似 <td>

  • table-column-group

    类似 <colgroup>

  • table-column

    类似 <col>

  • table-caption

    类似 <caption>

  • ruby-base (处于试验中)

    类似 <rb>

  • ruby-text (处于试验中)

    类似 <rt>

  • ruby-base-container (处于试验中)

    类似 <rbc>

  • ruby-text-container (处于试验中)

    类似 <rtc>

3.5 Box

这类值决定一个元素自身是否生成一个显示盒子。

  • contents

    元素自身不生成一个盒子,而是由它的伪元素或子元素的盒子来代替它自己的盒子。

  • none

    直接玩消失!

3.6 Precomposed

这类值是由上述类型的值进行组合生成的。

  • inline-block

    等价于 inline flow-root

  • inline-talbe

    等价于 inline talbe

  • inline-flex

    等价于 inline flex

  • inline-grid

    等价于 inline grid

4 参考文献

MDN display