display - 显示模式 - css 定位布局
display
display 属性可以设置元素的内部和外部显示类型 display types。元素的外部显示类型 outer display types 将决定该元素在流式布局中的表现(块级或内联元素);元素的内部显示类型 inner display types 可以控制其子元素的布局(例如:flow layout,grid 或 flex)。
示例
/* values 外部显示类型 */ display: block; display: inline; display: run-in; /* values 内部显示类型 */ display: flow; display: flow-root; display: table; display: flex; display: grid; display: ruby; /* plus values */ display: block flow; display: inline table; display: flex run-in; /* values */ display: list-item; display: list-item block; display: list-item inline; display: list-item flow; display: list-item flow-root; display: list-item block flow; display: list-item block flow-root; display: flow list-item block; /* values */ display: table-row-group; display: table-header-group; display: table-footer-group; display: table-row; display: table-cell; display: table-column-group; display: table-column; display: table-caption; display: ruby-base; display: ruby-text; display: ruby-base-container; display: ruby-text-container; /* values */ display: contents; display: none; /* values */ display: inline-block; display: inline-table; display: inline-flex; display: inline-grid; /* global values */ display: inherit; display: initial; display: unset;
浏览器支持
浏览器都支持display |
语法
display:[||] || | |display 属性使用关键字取值来指定,关键字取值被分为六类:
这些关键字指定了元素的外部显示类型,实际上就是其在流式布局中的角色(即在流式布局中的表现)。
- block:元素生成一个块元素框,在正常流中生成元素前后的换行符。
- inline:元素生成一个或多个内联元素框,这些框不会在其前后生成换行符。在正常流中,如果有空间,下一个元素将位于同一行上
- run-in:元素生成一个磨合盒。如果定义为display:run-in框的元素的相邻同级是块框,则run-in框将成为它后面的块框的第一个内联框。Run-in元素的作用类似于inline或block,具体取决于周围的元素。即:如果磨合框包含块框,则与块相同。如果块框在运行框之后,则运行框将成为块框的第一个内联框。如果后面有一个内联框,则运行框将成为块框。此项还处于实验阶段
这些关键字指定了元素的内部显示类型,它们定义了该元素内部内容的布局方式(假定该元素为非替换元素 non-replaced element)
- table:这些元素的行为类似于HTML
元素。它定义了块级别的框。
- flex:元素的行为类似于块元素,并根据flexbox(伸缩盒子)模型布局其内容。
- grid:元素的行为类似于块元素,并根据grid(网格模型)布置其内容。
- flow:元素使用flow(流)布局(块和内联布局)布局其内容。如果它的外部显示类型是inline或run-in,并且它参与了块或内联格式上下文,那么它将生成一个内联框。否则,它将生成一个块容器盒。此项还处于实验阶段
- ruby:元素的行为类似于一个内联元素,并根据ruby格式模型布局其内容。它的行为类似于相应的HTML
元素。此项还处于实验阶段
将这个元素的外部显示类型变为block盒,并将内部显示类型变为多个
list-item
inline盒。列表项的单个值将导致元素的行为类似于列表项。这可以与列表样式类型和列表样式位置一起使用。
列表项还可以与任何关键字和flow或flow-root,关键字组合使用。
有些布局模型(如
table
和ruby
)有着复杂的内部结构,因此它们的子元素可能扮演着不同的角色。这一类关键字就是用来定义这些“内部”显示类型,并且只有在这些特定的布局模型中才有意义。- table-row-group:这些元素的行为
HTML元素。
- table-header-group:这些元素的行为
HTML元素。
- table-footer-group:这些元素的行为
HTML元素。
- table-row:这些元素的行为
HTML元素。 - table-cell:这些元素的行为
HTML元素。 - table-column-group:这些元素的行为
HTML元素。
- table-column:这些元素的行为
HTML元素。
- table-caption:这些元素的行为
HTML元素。
- ruby-base:这些元素的行为
HTML元素。此项还处于实验阶段
- ruby-text:这些元素的行为
HTML元素。此项还处于实验阶段
- ruby-base-container:这些元素的行为
HTML元素。此项还处于实验阶段
- ruby-text-container:这些元素的行为
HTML元素。此项还处于实验阶段
这些值决定元素是否使用盒模型。
- none:关闭元素的显示,使其对布局没有影响(呈现文档时就像元素不存在一样)。所有子元素的显示也已关闭。若要使元素占用其通常占用的空间,但不实际呈现任何内容,请改用visibility属性
- contents:这些元素本身不会生成特定的长方体。它们被它们的伪框和子框所取代。请注意,csssdisplaylevel3规范定义了contents值如何影响“异常元素”——这些元素不是纯粹由CSS框概念(如被替换的元素)呈现的元素。详见附录B:显示效果:异常元素的内容。由于浏览器中的可访问性,当前浏览器中的可访问性将不会从该元素中删除。此项还处于实验阶段
CSS 2 对于 display 属性使用单关键字语法,对于相同布局模式的block级和inline级变体需要使用单独的关键字。
- inline-block:元素生成一个块元素框,它将与周围的内容一起流动,就像它是一个单独的内联框一样(其行为与被替换的元素非常相似)。它相当于flow-root.
- inline-table:内联表值在HTML中没有直接映射。它的行为类似于HTML
元素,但它是一个内联框,而不是块级的框。表框内是块级上下文。它相当于inline table.
- inline-flex:元素的行为类似于一个内联元素,并根据flexbox模型布局其内容。它相当于 inline flex.
- inline-grid:元素的行为类似于内联元素,并根据网格模型布局其内容。它相当于 inline grid.
初始值 inline
适用元素 所有元素 是否是继承属性 否 适用媒体 all 计算值 作为指定值,但定位元素和浮动元素以及根元素除外。在这两种情况下,计算值可以是指定的关键字以外的关键字。 Animation type discrete display 的“遗留”取值
Level 3 规范详细说明了
display
属性的两类取值——显式地指定了外部和内部显示属性的规范——但是还没有被浏览器广泛支持。display-legacy 方法允许使用单个关键字达到相同效果,开发者应该在双关键字取值被广泛支持之前采用这个方法。举例来说,你可以这样指定 inline flex 容器:
.container { display: inline-flex; }
也可以用两个关键字来指定。
.container { display: inline flex; }
可访问性相关
display: none;
将
display
设置为none
会将元素从可访问性树中移除。这会导致该元素及其后续元素不再被屏幕阅读技术访问。如果你只是想从视觉上隐藏这个元素,对可访问性更加友好的做法是使用属性组合来将其从屏幕上隐藏,但仍可以被屏幕阅读器等辅助技术解析。
display: contents;
浏览器会将所有将
display
设置为contents
的元素从可访问性树中移除。这会导致该元素及其后续元素不再被屏幕阅读技术访问。- Display: Contents Is Not a CSS Reset | Adrian Roselli
- More accessible markup with display: contents — hiddedevries.nl
Tables
将
元素的
display
值修改为block
,grid
或flex
会修改其在可访问性树中的表示,这会使得表格不能被屏幕阅读技术正常处理。
- table-cell:这些元素的行为
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!