MDN之Web开发技术【display】

旧城等待, 2021-07-04 16:37 590阅读 0赞

为显示CSS属性设置是否将元素视为块或内联元素以及用于其子元素的布局,例如gridflex

display CSS 属性指定了元素的显示类型,它包含两类基础特征,用于指定元素怎样生成盒模型——外部显示类型定义了元素怎样参与流式布局的处理,内部显示类型定义了元素内子元素的布局方式。

display 的一些取值已经在其单独的规范中给出了完整的定义;在文末的表格中可以找到所有规范的链接。全部的取值如下:

  1. /* <display-outside> values */
  2. display: block;
  3. display: inline;
  4. display: run-in;
  5. /* <display-inside> values */
  6. display: flow;
  7. display: flow-root;
  8. display: table;
  9. display: flex;
  10. display: grid;
  11. display: ruby;
  12. /* <display-outside> plus <display-inside> values */
  13. display: block flow;
  14. display: inline table;
  15. display: flex run-in;
  16. /* <display-listitem> values */
  17. display: list-item;
  18. display: list-item block;
  19. display: list-item inline;
  20. display: list-item flow;
  21. display: list-item flow-root;
  22. display: list-item block flow;
  23. display: list-item block flow-root;
  24. display: flow list-item block;
  25. /* <display-internal> values */
  26. display: table-row-group;
  27. display: table-header-group;
  28. display: table-footer-group;
  29. display: table-row;
  30. display: table-cell;
  31. display: table-column-group;
  32. display: table-column;
  33. display: table-caption;
  34. display: ruby-base;
  35. display: ruby-text;
  36. display: ruby-base-container;
  37. display: ruby-text-container;
  38. /* <display-box> values */
  39. display: contents;
  40. display: none;
  41. /* <display-legacy> values */
  42. display: inline-block;
  43. display: inline-table;
  44. display: inline-flex;
  45. display: inline-grid;
  46. /* Global values */
  47. display: inherit;
  48. display: initial;
  49. display: unset;





































名称 说明
初始值 inline
适用元素 all elements
是否是继承属性
适用媒体 all
计算值 as the specified value, except for positioned and floating elements and the root element. In both cases the computed value may be a keyword other than the one specified.
Animation type discrete
正规顺序 the unique non-ambiguous order defined by the formal grammar

语法

display 属性使用关键字取值来指定. 关键字取值被分为六类:

  1. <display-outside>

这些关键字指定了元素的外部显示类型,实际上就是其在流式布局中的角色。

  1. <display-inside>

这些关键字指定了元素的内部显示类型,它们定义了元素内部内容的格式化上下文的类型(假设是不可替换的元素)。

  1. <display-listitem>

将这个元素的外部显示类型变为 block 盒,并将内部显示类型变为多个 list-item inline 盒。

  1. <display-internal>

tableruby 这样的布局模型有着复杂的内部结构,因此它们的孩子和后面的元素可能具有多个角色。这一类关键字就是用来定义这些“内部”显示类型,并且只有在这些特定的布局模型中才有意义。

  1. <display-box>

这些值定义元素是否完全生成显示盒。

  1. <display-legacy>

CSS 2 对于 display 属性使用单关键字语法, 对于相同布局模式的 block 级和 inline 级变体需要使用单独的关键字。

<display-xul> 已废弃 Gecko 62
只有 Firefox 使用,主要用于 XUL 文档 的样式.

display 的“遗留”取值

Level 3 规范详细说明了 display 属性的两类取值——显式地指定了外部和内部显示属性的规范——但是还没有被浏览器广泛支持。

display-legacy 方法允许使用单个关键字达到相同效果,在双关键字取值被广泛支持之前,应该被开发者广泛采用。举例来说,你可以这样用两个关键字指定 inline flex 容器:

  1. .container {
  2. display: inline flex;
  3. }

现在也可以用一个关键字来指定。

  1. .container {
  2. display: inline-flex;
  3. }

正式语

  1. [ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>
  2. where
  3. <display-outside> = block | inline | run-in
  4. <display-inside> = flow | flow-root | table | flex | grid | ruby
  5. <display-listitem> = <display-outside>? && [ flow | flow-root ]? && list-item
  6. <display-internal> = table-row-group | table-header-group | table-footer-group | table-row | table-cell | table-column-group | table-column | table-caption | ruby-base | ruby-text | ruby-base-container | ruby-text-container
  7. <display-box> = contents | none
  8. <display-legacy> = inline-block | inline-list-item | inline-table | inline-flex | inline-grid

可访问性相关

display: none;

display 设置为 none 会将元素从可访问性树中移除。这会导致该元素及其后续元素不再被屏幕阅读技术访问。

如果你只是想从视觉上隐藏这个元素,对可访问性更加友好的做法是使用属性组合来将其从屏幕上隐藏,但仍可以被屏幕阅读器等辅助技术解析。

display: contents;

浏览器会将所有将 display 设置为 contents 的元素从可访问性树中移除。这会导致该元素及其后续元素不再被屏幕阅读技术访问。

Tables

<table> 元素的 display 值修改为 block, gridflex 会修改其在可访问性树中的表示,这会使得表格不能被屏幕阅读技术正常处理。

发表评论

表情:
评论列表 (有 0 条评论,590人围观)

还没有评论,来说两句吧...

相关阅读