美文网首页程序员技术栈简友广场前端开发
哪些不曾了解的CSS——04 diaplay属性

哪些不曾了解的CSS——04 diaplay属性

作者: 三点水滴 | 来源:发表于2019-05-03 13:09 被阅读25次

display属性

display属性指定了元素的显示类型,包含两类基础特征

  • 外部显示类型

指定元素怎样生成盒子模型,怎样参与流式布局的处理

  • 内部显示类型

定义非替换元素如何生成格式化上下文,确定子元素的布局方式

简单理解就是外部显示类型确定该元素本身如何显示,内部显示类型确定作为容器,该元素的子元素如何显示

display的规范

在CSS Display Module Level 3中,对display属性的定义如下:

name: display

value: [<display-outside>||<display-inside>]

|<display-listitem>

|<display-internal>

|<display-box>

|<display-leagcy>

initial: inline

applies to: all elements

inherited: no

先简单介绍如何阅读以上规范

如何理解规范

  • “<”和“>”之间的词给出了某种值的类型,或者是对另一个属性的引用
  • 一些关键字符串在一起,这意味着所有这些关键字必须以给定顺序出现
  • 如果候选项由一个竖线分隔(X | Y),那么必须出现其中之一,且不能同时出现
  • 双竖线(X || Y)表示出现X或Y,或者二者都必须出现,但是必须按照顺序
  • 双和号(&&)分隔的两个或更多部分,必须全部出现,顺序随意
  • 中括号([...])用于分组。两项并列优先级要高于双竖线,而双竖线则高于单竖线
  • inital 表示初始值
  • applies to 表示应用该属性的元素
  • inherited 表示该属性的值是否能被子元素继承

基于以上规则,display可选值类型就确定了,那么每种类型有哪些值,并且没种类型代表什么含义呢?

<display-outside> = block | inline | run-in
<display-inside> = flow | flow-root | table | flex | grid | ruby
<display-listitem> = <display-outside>? && [flow | flow-root]? && list-item
<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
<display-box> = contents | none
<display-leagcy> = inline-block | line-table | line-flex | inline-grid
  • display-outside 指定了该元素在流式布局中的外部显示类型:

    • block表示该元素会生成一个块级盒子
    • inline表示该元素会生成一个行内级盒子
    • run-in表示会生成一个run-in box,这是一种有特殊行为的行内级盒子
    • 如果声明了<display-outside>的值,却忽略了<display-inside>的值,那么该元素的内部显示类型默认为 flow
  • display-inside 指定了该元素的内部显示类型——用来定义确定内容如何输出的格式化上下文:

    • flow 表示使用流式布局,如果<display-outside>为inline或run-in,并且该元素块或行内格式化上下文,就会产生行内盒子,否则产生块容器盒子
    • flow-root 表示该元素会产生一个块容器盒子,对内容使用流式布局
    • table 指定该元素会产生一个表格包装盒子(table wrapper box),建立一个块格式化上下文,并且额外产生一个表格盒子(table box),在其中建立一个表格格式化上下文(table formatting context)
    • flex 指定该元素产生一个flex容器盒子,并建立一个flex格式化上下文
    • grid 指定该元素产生一个grid容器盒子,并建立一个grid格式化上下文
    • ruby 指定该元素产生一个ruby容器盒子,并建立一个ruby格式化上下文
    • 如果声明了<diaplay-inside>的值,却忽略了<diaplay-outside>的值,那么该元素的外部显示类型默认为block,除了ruby,其默认值为inline
  • list-item关键字会导致该元素生成一个::marker的伪元素,可以通过list-style 来修改其样式。如果没有声明内部显示类型,默认为flow;如果没有声明外部显示类型,默认为block

  • table-* 和 ruby-*关键字所代表的布局模型,有很复杂的内部结构,暂时不做深入了解

  • display-box 指定该元素是否生成盒子

    • contents 指定该元素本身不会生成盒子,但是它的子元素和伪元素依旧正常生成盒子
    • none 指定该元素及其后代元素都不会生成盒子
  • diaplay-leagcy 是css 2使用的单关键字语法

    • inline-block 的行为与inline flow-root一致
    • inline-table 的行为与inline table 一致
    • inline-flex 的行为与 inline flex 一致
    • inline-grid 的行为与 inline grid 一致

相关文章

  • 哪些不曾了解的CSS——04 diaplay属性

    display属性 display属性指定了元素的显示类型,包含两类基础特征 外部显示类型 指定元素怎样生成盒子模...

  • CSS基础样式

    什么是 CSS 继承?哪些属性能继承,哪些不能? CSS样式表继承指的是,特定的CSS属性向下传递到子孙元素。 有...

  • Web前端社交账号注册按钮

    元素的分类css的diaplay属性背景图片 背景图片 请点赞!因为你们的赞同/鼓励是我写作的最大动力! 欢迎关注...

  • 2019-04-05

    CSS基础样式 什么是 CSS 继承?哪些属性能继承,哪些不能? 一。无继承性的属性 1、display:规定元素...

  • 学习纲要:CSS 布局

    学习条件 掌握了 CSS 的选择器、属性和值。 学习目标 了解 display 属性的可选值有哪些,分别代表什么意...

  • 2018-07-31

    svg 标签和怎么引入的问题 哪些css属性可以触发repaint 哪些css属性可以继承 用最简单的不考虑兼容性...

  • CSS基础样式

    一、什么是 CSS 继承?哪些属性能继承,哪些不能? CSS继承,就是指父元素中设置的属性,能够继承到子孙元素。 ...

  • css基础样式

    1、什么是 CSS 继承?哪些属性能继承,哪些不能? css继承是指当html中某元素未设置任何属性时,其父元素的...

  • css 学习大杂烩(持续更新)

    css学习大杂烩 重置样式 清除浮动 css 哪些属性可以继承 CSS中可以和不可以继承的属性 - libaoqi...

  • ##深入学习CSS布局系列(一)布局常用属性

    @(CSS)[CSS, 布局] 深入学习CSS布局系列(一)布局常用属性 一直感觉自己对CSS的各个属性很了解,可...

网友评论

    本文标题:哪些不曾了解的CSS——04 diaplay属性

    本文链接:https://www.haomeiwen.com/subject/kdganqtx.html