现代CSS:全新的 display 属性

FED实验室

从 Chrome 115、Safari 15、Firefox 70 开始,现代浏览器已经支持了 display 多值语法。我们使用的 display 单值语法已经被视为传统值,但为了向后兼容,浏览器中仍保留了这些值。

1.display 多值语法介绍

display 属性具有相当强大的功能,除了显示某个内容与页面上其他方框的关系是块级还是行内级外,它还能显示应用该属性的方框内部的格式上下文。

为了更好地描述这种行为,display 类型被分为外部显示类型和内部显示类型两部分:

  • 外部显示类型:决定了主方框本身如何参与流程布局。
  • 内部显示类型:决定了其后代框的布局方式(被替换的元素除外,这一点比较复杂)。

例如:display: flex 变为 display: block flex,意味着外部显示类型是 block(在外部表现为块状元素),但它的子元素是按照 flex 布局呈现的。

这意味着,我们不需要设置 display: flex 来创建带有 flex 子代的块级方框,而是使用 display: block flex。我们使用 display: inline flex 代替 display: inline-flex 来创建带有 flex 子代的 inline-level 框。

有了这一变化,我们就可以讨论显示属性对子元素和周围元素的影响了。这种思维模式可以让我们更轻松地创建更可预测的布局,也更容易解释不同的布局模式及其效果。

2.display 多值语法兼容性

从 Chrome 115、Safari 15、Firefox 70 开始,现代浏览器已经支持了 display 多值语法。
FED实验室

3.display 属性常见单值 vs 多值映射

下表显示了其中一些新值与规范中的单一值(现称为传统值)之间的映射关系。

Short displayFull display
blockblock flow
flow-rootblock flow-root
inlineinline flow
inline-blockinline flow-root
flexblock flex
inline-flexinline flex
gridblock grid
inline-gridinline grid

上面表中除了 flow-root 在日常开发中经常被用到,大家应该都比较熟悉。当赋予一个元素 display: flow-root,它就会成为一个新的块格式上下文,成为一个新的正常流程的根元素。从本质上讲,这将导致浮动元素被包含在内。此外,子元素的边距会保留在容器内,而不会随父元素的边距一起折叠。如下示例:

<style>
.container {
  background-color: #000;
  padding: 10px;
  .box {
    background-color: #fff;
    color: #000;
    max-width: 500px;
    margin: 0 0 2em 0;
    padding: 1em;
    clear: left;
    & img {
      float: left;
      width: 150px;
      margin: 0 10px 10px 0;
    }
  }
  .box2 { display: flow-root;}
  & p { margin: 2em 0; color: #fff }
}
</style>
<div class="container">
  <div class="box box1">
    <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/12005/balloon-sq1.jpg">The image has been floated to the left. This box does not have display: flow-root.
  </div>
  <p>This paragraph follows the box which contains the float.</p>
  <div class="box box2">
    <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/12005/balloon-sq1.jpg">The image has been floated to the left. This box does have display: flow-root.
  </div>
  <p>This paragraph follows the box which contains the float.</p>
</div>

FED实验室(前端开发实验室)

其实 display: inline-blockdisplay: flow-root 这两个值本质上是相同的。众所周知,inline-block 的值会创建一个内联 flow-root,这就是为什么 display: inline-block 的新双值版本是 display: inline flow-root。它的作用与 flow-root 属性完全相同,后者在双值世界中变成了 display: block flow-root

4.最后

出现新的特性和功能总是令人兴奋的,在前端世界里,我们要学会拥抱变化。最后,希望其他浏览器也能尽快的支持多值语法,在不远的将来,我们就能以 multi-keyword 语法来编写更有语义化的 CSS。
欢迎关注「FED实验室」微信公众号,获取更多前端热点资讯、技术实践。
FED实验室公众号

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "display: -webkit-box" 是一个CSS属性,用于在网页中设置一个元素的布局方式。其中的"-webkit-box"是一个旧版的CSS布局方式,现在已经被"flex"所取代。它可以让元素根据某些属性,如"flex-direction"、"justify-content"和"align-items"等,以盒模型的方式排列和分布。"display: -webkit-box" 是CSS代码中的一种属性设置,用于控制元素的布局方式。这个属性在早期的WebKit浏览器中被广泛使用,但在现代的浏览器中已经被废弃,取而代之的是更加通用的 "display: flex" 和 "display: grid" 属性。 在早期的WebKit浏览器中,"-webkit-box" 属性可以用来创建基于弹性盒子模型(Flexible Box Model)的布局,它可以使得元素的大小和位置能够自适应屏幕大小和内容变化。不过,由于这个属性只能在WebKit浏览器中使用,因此现在已经不建议继续使用它了。"display: -webkit-box" 是一种CSS样式属性,用于指定元素的布局方式为弹性盒子布局,它是适用于WebKit内核浏览器的一种属性写法。该属性可以用于设置弹性容器的子元素在弹性容器内的排列方式、对齐方式、换行方式等等。当然,为了兼容不同的浏览器内核,还需要加上其他类似于"-moz-box"和"-ms-box"等属性前缀。"display: -webkit-box" 是一种 CSS 属性,用于设置元素的显示方式为基于 WebKit 引擎的盒模型布局。该属性主要用于实现一些复杂的布局效果,如响应式网页设计和弹性盒模型布局等。在最新的 CSS 规范中,该属性已经被废弃,取而代之的是更加通用的 display: flex 和 display: grid 属性。"display: -webkit-box" 是一个CSS属性,用于设置元素的布局方式。它指定一个元素使用Webkit引擎的Box布局模型,该模型允许元素通过设置属性来控制其在容器内的位置和大小。这个属性通常用于兼容旧版WebKit浏览器,现在已经被更普遍的flexbox和grid布局所取代。"display: -webkit-box" 是一个CSS属性,用于在Webkit浏览器中定义弹性盒子容器的显示方式。该属性指定元素应该以弹性盒子布局模型来显示。在Webkit浏览器中,这个属性通常用于实现一些比较高级的布局效果,比如多列布局、等分布局等。需要注意的是,该属性只能在Webkit浏览器中生效,在其他浏览器中需要使用不同的属性来实现类似的布局效果。 你好!很高兴认识你! 很高兴认识你!"display: -webkit-box" 是一个CSS属性,它被用来定义一个元素的布局方式。它是一个旧版的CSS语法,用于支持旧版的WebKit浏览器(如Safari和Chrome)。这个属性用于将一个元素变成一个灵活的盒子,允许在一个行内或行内块级元素中设置多个子元素的布局方式。然而,由于它只是针对WebKit浏览器的,所以现代CSS推荐使用更通用的Flexbox或Grid布局来代替。"display: -webkit-box" 是CSS中用来定义盒子模型的属性之一。它是针对旧版本的Webkit浏览器(例如Safari、Chrome)的属性,用于控制元素的布局方式和大小。 这个属性通常和其他属性一起使用,例如"-webkit-box-align"、"-webkit-box-pack"、"-webkit-box-orient"和"-webkit-box-flex",以实现更高级的布局和排版效果。虽然这个属性现代浏览器中已经被废弃,但是在一些旧的Webkit浏览器中仍然可以使用。"display: -webkit-box" 是CSS的一种属性设置,用于在webkit内核的浏览器中显示一个弹性盒子(flexbox)。该属性值可以结合其他弹性盒子的属性,如“-webkit-box-orient”和“-webkit-box-pack”,来控制盒子内子元素的排列和对齐方式。需要注意的是,这个属性在非webkit内核的浏览器中可能不被支持。 我很高兴能够为您服务!`display: -webkit-box` 是一个CSS属性,它被用于指定一个元素的布局方式。这个属性值被设置为 `-webkit-box`,因为它是Webkit浏览器的私有前缀。 当一个元素被设置为 `-webkit-box` 布局时,它会被呈现为一个基于文本流的弹性盒子。这个弹性盒子可以通过设置其他的 CSS 属性来控制它的尺寸、位置和排列方式。 需要注意的是,`-webkit-box` 已经被淘汰,官方推荐使用 `display: flex` 或 `display: grid` 来代替。 你好,很高兴为你服务。 你好,很高兴能在这里和你聊天!"display: -webkit-box" 是一个CSS样式属性,用于控制CSS元素的布局。它是针对Webkit浏览器引擎的一个私有属性,用于支持旧版本的浏览器。它可以用于实现弹性盒模型布局,通过控制元素的排列方式、对齐方式、间距等属性,实现灵活的布局效果。但是,它并不是标准CSS属性,因此在编写CSS样式时,建议使用标准的CSS属性来实现布局。`display: -webkit-box`是CSS中一种用于设置布局的属性。它是针对使用WebKit引擎的浏览器而设计的,可用于在一个容器中定义一个灵活的盒模型,其中内容可以根据指定的排列方式自动调整大小和位置。这个属性的主要作用是实现响应式布局,可以让页面在不同尺寸的设备上呈现出不同的效果。`display: -webkit-box` 是一种CSS样式属性,用于定义一个元素的显示方式为基于Webkit内核的盒模型。它可以控制元素的排列方向、换行方式、对齐方式和元素的大小等。通常会和其他样式属性一起使用,以创建响应式设计和布局。需要注意的是,由于它是基于Webkit内核的属性,因此在其他浏览器中可能不被支持。`-webkit-box`是一个旧的CSS属性,它用于创建一个基于弹性盒子模型的容器,以便更好地排列和布局盒子内的元素。它是Webkit浏览器引擎的私有属性,在现代浏览器中已被弃用,可以使用CSS Flexbox或CSS Grid来替代它。`display: -webkit-box` 是CSS的一个属性,用于指定一个元素的布局方式为一个基于Webkit引擎的灵活盒子模型。它可以让元素按照一定的规则排列,并能够根据需要自动调整元素的大小和位置,以适应不同的屏幕大小和设备类型。具体的实现方式可以参考Webkit引擎的相关文档。`-webkit-box`是一个CSS属性,用于控制在使用Webkit内核的浏览器中,盒模型如何呈现和布局。它被用于早期版本的Flexbox布局中,现在已被弃用,应该使用新的Flexbox属性来代替。`-webkit-box` 是一个用于控制 Webkit 浏览器中的盒子模型的 CSS 属性。这个属性已经被淘汰了,现在推荐使用 `display: flex` 或 `display: grid` 来布局页面。如果您仍需要在旧版浏览器中使用 `-webkit-box`,可以继续使用,但需要注意它可能不兼容新版浏览器。`-webkit-box`是一个CSS属性,用于设置一个基于弹性盒子模型的布局容器。它是用于旧版本的WebKit浏览器(如Safari和Chrome)的,而现代浏览器已经使用`display: flex`代替了`-webkit-box`属性。它可以用于控制盒子元素的水平和垂直对齐方式,以及它们在容器中的位置和空间分配。如果您需要支持旧版本的WebKit浏览器,可以使用`-webkit-box`,但对于现代浏览器,最好使用标准的`display: flex`属性。`display: -webkit-box` 是一种 CSS 属性,它用于指定一个元素应该被渲染为一个弹性盒子容器。`-webkit-box` 是一个老旧的弹性盒子布局模型,现在已被更先进的 `flexbox` 和 `grid` 替代。在现代浏览器中,建议使用 `display: flex` 或 `display: grid` 代替 `-webkit-box`。`display: -webkit-box` 是一种CSS属性,用于定义一个容器元素以及该元素内部的内容如何呈现。它是Webkit浏览器引擎(如Chrome和Safari)的私有属性,它们使用它来实现CSS弹性盒子布局模型。该属性值是`-webkit-box`,而不是`-webkit-flex`或`-webkit-inline-flex`。通过设置`display: -webkit-box`,容器将以一种弹性盒子模型进行布局,其中包含了弹性盒子容器的基本属性和一些子项布局属性,例如弹性伸缩、主轴方向和交叉轴方向。虽然这是一个私有属性,但是在一些旧版浏览器中可能会使用到它。如果想使用CSS弹性盒子布局模型,建议使用标准的CSS属性`display: flex`或`display: inline-flex`。`display: -webkit-box` 是一种CSS样式属性,它在早期版本的Webkit内核浏览器中用于创建弹性盒子容器。它可以让元素按照指定的方向和比例进行布局,并且可以通过设置一些其他的属性来控制它们的对齐方式、排序和换行等。然而,随着浏览器技术的发展,现在更常用的是`display: flex`和`display: grid`来实现弹性布局。"display: -webkit-box" 是一种CSS属性,它用于控制在WebKit浏览器(例如Safari和Chrome)中使用弹性盒子布局模型。这种布局模型基于“弹性盒子”的概念,使得在网页布局中,可以更加灵活地控制元素的尺寸、位置和顺序等方面,提高了响应式设计的效果。如果在不支持WebKit浏览器的浏览器中使用该属性,则需要添加其他浏览器的前缀,例如"display: -moz-box"(Firefox浏览器)。"display: -webkit-box" 是一个CSS样式属性,用于设置元素的布局方式为弹性布局,并且使用webkit浏览器引擎来实现该布局方式。该属性已经过时,应该使用更通用的"display: flex"来代替。`display: -webkit-box` 是一个CSS属性,它用于在Webkit浏览器中创建一个弹性盒子容器。在这个容器中,子元素可以通过使用 `flex` 属性来定位和排列。该属性已经被弃用,应该使用标准的 `display: flex` 属性来代替。"display: -webkit-box" 是一种CSS样式属性,用于控制一个元素的布局方式。它是用于WebKit浏览器引擎的私有属性,可用于在iOS和Safari浏览器中控制Flexbox布局。 该属性的语法如下: ``` display: -webkit-box; ``` 此属性指示元素应该被呈现为一个块级盒子,其内容按照水平或垂直方向排列。在WebKit浏览器中,它还可以与其他CSS属性一起使用,如-webkit-box-align,-webkit-box-orient和-webkit-box-pack等。 需要注意的是,该属性只适用于WebKit浏览器,其他浏览器可能不支持它。因此,如果您希望您的网站在所有现代浏览器中都能正常显示,最好使用其他CSS布局属性,如Flexbox或Grid布局。 ### 回答2: display: -webkit-box 是一种在 Webkit 内核的浏览器中实现的 CSS 属性。它主要用于控制元素的布局方式和行为。 在 Webkit 内核的浏览器中,通过设置 display: -webkit-box ,可以让元素按照弹性盒子模型进行布局。这种布局方式可以让元素根据不同的容器尺寸和设备屏幕尺寸自动调整尺寸和位置。这种布局方式可以使得网站页面在不同屏幕上都能呈现出最佳的视觉效果。 具体来说,使用 display: -webkit-box 可以实现以下特性: 1. 垂直居中:通过设置元素的 display: -webkit-box 和 -webkit-box-align:center,可以实现垂直居中的效果。 2. 水平居中:通过设置元素的 display: -webkit-box 和 -webkit-box-pack:center,可以实现水平居中的效果。 3. 等分布局:通过设置元素的 display: -webkit-box 和 -webkit-box-pack:justify,可以实现等分布局的效果。 4. 自适应宽度:通过设置元素的 display: -webkit-box 和 -webkit-box-flex:1,可以实现元素宽度的自适应调整。 总的来说,display: -webkit-box 是一种非常实用的 CSS 属性,可以实现网页布局的灵活性和适应性,使得网站开发更加高效和方便。 ### 回答3: display: -webkit-box是CSS3中的一个属性,主要用于控制在网页布局中的盒子模型展示方式。其中的-webkit-box是Webkit内核浏览器的前缀,也就是说,这个属性最早用于Safari和Chrome浏览器,但现在也被大多数主流浏览器所支持。 这个属性的主要作用是将一个容器模型分成很多个小块,这些小块按照一定的规则排列显示。常见的有以下几种: 1. display: -webkit-box; -webkit-box-orient: horizontal; 这种方式会将容器内的所有元素横向排列。如果容器的子元素宽度总和大于容器宽度,则超出的部分会自动进行缩小;如果小于容器宽度,则会自动进行水平居中。 2. display: -webkit-box; -webkit-box-orient: vertical; 这种方式会将容器内的所有元素垂直排列。如果容器的子元素高度总和大于容器高度,则超出的部分会自动进行缩小;如果小于容器高度,则会自动进行垂直居中。 3. display: -webkit-box; -webkit-box-orient: horizontal; -webkit-box-pack: justify; 这种方式会将容器内的所有元素横向排列,并且在整个容器中宽度不变的情况下,自动调整各个元素之间的间隔。其中,-webkit-box-pack: justify的作用就是让子元素之间的间隔均匀分配,使整个容器看起来更加美观。 除了以上几种情况之外,display: -webkit-box还具有很多其他的属性和使用方法,用于满足不同的布局需求。例如,可以通过-webkit-box-align属性来控制子元素在容器中的垂直对齐方式,也可以通过-webkit-box-flex属性来控制子元素在容器中的伸缩性。总之,display: -webkit-box是一种非常实用、灵活的CSS3属性,让Web开发者可以更加轻松地实现各种复杂的网页布局。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值