百科狗-知识改变命运!
--

display - 显示模式 - css 定位布局

乐乐1年前 (2023-11-21)阅读数 12#技术干货
文章标签元素

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-iteminline盒。

    列表项的单个值将导致元素的行为类似于列表项。这可以与列表样式类型和列表样式位置一起使用。

    列表项还可以与任何关键字和flowflow-root,关键字组合使用。

    有些布局模型(如tableruby)有着复杂的内部结构,因此它们的子元素可能扮演着不同的角色。这一类关键字就是用来定义这些“内部”显示类型,并且只有在这些特定的布局模型中才有意义。

    • 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 typediscrete

      display 的“遗留”取值

      display - 显示模式 - css 定位布局

      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,gridflex会修改其在可访问性树中的表示,这会使得表格不能被屏幕阅读技术正常处理。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)