Flex布局教程:语法篇--css中的display:Flex

先用一句话秒懂display:Flex;这句css代码,如图:

放个目录先:

目录

一、Flex布局是什么?

二、基本概念

三、容器的属性

3.1 flex-direction属性(主轴的方向)

3.2 flex-wrap属性(如何换行)

3.3 flex-flow

3.4 justify-content属性(在主轴上的对齐方式)

3.5 align-items属性(在交叉轴上的对齐方式)

3.6 align-content属性(多根轴线的对齐方式)

四、项目的属性

4.1 order属性(项目的排列顺序)

4.2 flex-grow属性(项目的放大比例)

4.3 flex-shrink属性(项目的缩小比例)

4.4 flex-basis属性(分配多余空间之前,项目占据的主轴空间)

4.5 flex属性

4.6 align-self属性(允许单个项目有与其他项目不一样的对齐方式)


 

下面引用篇文章详细说——

 原文作者: 阮一峰  日期: 2015年7月10日

网页布局(layout)是CSS的一个重点应用。

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

Flex布局将成为未来布局的首选方案。本文介绍它的语法,下一篇文章给出常见布局的Flex写法。

以下内容主要参考了下面两篇文章:A Complete Guide to Flexbox 和 A Visual Guide to CSS3 Flexbox Properties

一、Flex布局是什么?

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局。

.box{ display: flex; } 

行内元素也可以使用Flex布局。

.box{ display: inline-flex; } 

Webkit内核的浏览器,必须加上-webkit前缀。

.box{ display: -webkit-flex; /* Safari */ display: flex; } 

注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

二、基本概念

采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

三、容器的属性

以下6个属性设置在容器上。

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

3.1 flex-direction属性(主轴的方向)

flex-direction属性决定主轴的方向(即项目的排列方向)。

.box { flex-direction: row | row-reverse | column | column-reverse; } 

它可能有4个值。

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

3.2 flex-wrap属性(如何换行)

默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

.box{ flex-wrap: nowrap | wrap | wrap-reverse; } 

它可能取三个值。

(1)nowrap(默认):不换行。

(2)wrap:换行,第一行在上方。

(3)wrap-reverse:换行,第一行在下方。

3.3 flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

.box { flex-flow: <flex-direction> || <flex-wrap>; } 

3.4 justify-content属性(在主轴上的对齐方式)

justify-content属性定义了项目在主轴上的对齐方式。

.box { justify-content: flex-start | flex-end | center | space-between | space-around; } 

它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

3.5 align-items属性(在交叉轴上的对齐方式)

align-items属性定义项目在交叉轴上如何对齐。

.box { align-items: flex-start | flex-end | center | baseline | stretch; } 

它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

3.6 align-content属性(多根轴线的对齐方式)

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; } 

该属性可能取6个值。

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

四、项目的属性

以下6个属性设置在项目上。

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

4.1 order属性(项目的排列顺序)

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

.item { order: <integer>; } 

4.2 flex-grow属性(项目的放大比例)

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item { flex-grow: <number>; /* default 0 */ } 

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

4.3 flex-shrink属性(项目的缩小比例)

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item { flex-shrink: <number>; /* default 1 */ } 

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

负值对该属性无效。

4.4 flex-basis属性(分配多余空间之前,项目占据的主轴空间)

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item { flex-basis: <length> | auto; /* default auto */ } 

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

4.5 flex属性

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

.item { flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] } 

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

4.6 align-self属性(允许单个项目有与其他项目不一样的对齐方式)

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; } 

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

(完)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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: flexdisplay: 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开发者可以更加轻松地实现各种复杂的网页布局。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值