1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > flex布局 flex布局属性有哪些

flex布局 flex布局属性有哪些

时间:2019-12-07 12:29:07

相关推荐

flex布局 flex布局属性有哪些

1. 什么是Flex布局?

Flex布局是一种现代的CSS布局方式,它可以在不确定容器大小和元素大小的情况下,将多个子元素按照一定的规则排列和分配空间,以实现灵活的页面布局和自适应效果。它有许多优点,例如简单易懂、代码量少、适应各种设备等等,成为了近年来被广泛使用的一种布局方式。

2. Flex的基础概念

Flex布局有三个重要的概念:容器、项目、轴线。

(1)容器:Flex容器是指应用Flex布局的元素,它的display属性值为flex或inline-flex。它包含了多个Flex项目,可以通过设置Flex容器的属性来控制整个布局的样式。

(2)项目:Flex项目是指容器中的子元素,它们可以按照一定的规则排列和布局。每个项目有一个主轴和一个侧轴,主轴和侧轴的方向由Flex容器的方向属性决定。

(3)轴线:主轴上的参照线称为轴线,轴线的方向由Flex容器的方向属性决定。在Flex容器中,轴线被分为主轴和侧轴两个方向,它们沿着Flex容器的方向属性来决定。

除此之外还有一些重要的属性,它们可以控制Flex容器和Flex项目的布局。

(1)Flex容器的属性

Flex容器可以使用一些属性来定义其样式,主要包括以下几个:

1) display:设置Flex容器的显示类型,可以为flex或inline-flex。

2) flex-direction:定义Flex容器的主轴方向,可以为row、row-reverse、column、column-reverse四个值。

3) flex-wrap:定义Flex容器中Flex项目是否换行及换行方式,可以为nowrap、wrap或wrap-reverse三个值。

4) justify-content:定义Flex项目在主轴上的对齐方式,可以为flex-start、flex-end、center、space-between、space-around等值。

5) align-items:定义Flex项目在侧轴上的对齐方式,可以为flex-start、flex-end、center、stretch、baseline等值。

6) align-content:定义多行Flex项目在侧轴上的对齐方式,可以为flex-start、flex-end、center、stretch、space-between、space-around等值。

(2)Flex项目的属性

Flex项目可以使用一些属性来定义其样式,主要包括以下几个:

1) order:定义Flex项目的排列顺序,数值越小排列越靠前,默认为0。

2) flex-grow:定义Flex项目在可分配空间中所占的比例,默认为0。

3) flex-shrink:定义Flex项目在空间不足时所占的比例,默认为1。

4) flex-basis:定义Flex项目在分配多余空间之前的初始大小。

5) flex:上述三个属性的简写属性,顺序为flex-grow、flex-shrink、flex-basis。

6) align-self:定义Flex项目在侧轴上的对齐方式,可以覆盖Flex容器的align-items属性,可取值和align-items相同。

3. Flex布局的核心思想

Flex布局的核心思想是“弹性盒子模型”,即Flex容器和Flex项目都是一个弹性盒子,它们的大小和位置可以根据Flex容器设置的一些属性来弹性伸缩和调整。其中,Flex布局的主轴和侧轴是相对的,根据Flex容器的属性不同,它们会相互转换。

(1)主轴和侧轴的转换

在Flex容器上设置flex-direction属性可以改变主轴方向,同时侧轴跟着改变。默认情况下,Flex容器呈水平方向,主轴方向是水平方向,侧轴方向是垂直方向。当flex-direction为row-reverse时,主轴方向沿着水平方向从右向左,侧轴方向不变;当flex-direction为column时,主轴方向沿着垂直方向从上向下,侧轴方向沿着水平方向从左向右;当flex-direction为column-reverse时,主轴方向沿着垂直方向从下向上,侧轴方向沿着水平方向从左向右。

(2)Flex布局的排列规则

Flex容器会按照以下规则排列Flex项目:

1) 每个Flex项目默认按照原始顺序一个挨着一个排列。

2) Flex项目的宽度和高度默认为内容宽度和高度,也可以通过width、height、flex-basis属性来设置。

3) Flex项目默认沿着主轴方向排列,可以通过align-self属性来控制在侧轴方向的位置。

4) 如果Flex容器中的项目超出了容器的大小,可以通过flex-wrap属性来控制是否需要换行排列。

5) 在主轴上,Flex容器和Flex项目通过justify-content属性来控制Flex项目的排列。

6) 在侧轴上,Flex容器通过align-items属性来控制Flex项目的对齐方式,Flex项目通过align-self属性来覆盖Flex容器的默认对齐方式。

4. Flex布局的用法

(1)Flex容器的属性用法

在使用Flex布局时,我们可以通过设置Flex容器的属性来控制Flex项目的排列。

(1)设置Flex容器的宽度和高度

Flex容器的宽度和高度可以通过width和height属性来设置。如果不设置,则默认自适应,根据Flex项目的大小自动调整容器大小。

(2)设置Flex容器的方向

Flex容器的方向通过设置flex-direction属性来控制,分为row、row-reverse、column和column-reverse四个值。

(3)设置Flex项目的对齐方式

Flex容器和Flex项目可以在主轴和侧轴上控制Flex项目的对齐方式。主轴上的对齐方式通过justify-content属性来设置,侧轴上的对齐方式通过align-items属性来设置。

(4)设置Flex项目的排序顺序

Flex项目默认按照原始顺序一个挨着一个排列,可以通过order属性来修改它们的排序顺序。

(5)设置Flex项目的弹性伸缩比例

Flex项目的弹性伸缩比例通过flex属性来设置,包含了flex-grow、flex-shrink和flex-basis三个属性。其中,flex-grow属性控制弹性伸缩比例,flex-shrink属性控制缩放时的比例,flex-basis属性控制初始宽度或高度。

(6)设置Flex项目在侧轴上的对齐方式

Flex项目在侧轴上的对齐方式可以通过align-self属性来设置,它可以覆盖Flex容器的align-items属性。

(7)设置多行Flex项目的对齐方式

设置多行Flex项目的对齐方式可以通过align-content属性来设置,包含了flex-start、center、flex-end、space-between、space-around、stretch六个值。

(2)Flex项目的属性用法

在使用Flex布局时,我们还可以通过设置Flex项目的属性来控制它们的样式和排列顺序。

(1)设置Flex项目的宽度和高度

Flex项目的宽度和高度可以通过width和height属性来设置,也可以通过flex-basis属性来设置初始大小。

(2)设置Flex项目在侧轴上的对齐方式

在使用Flex布局时,我们可以通过设置Flex项目的align-self属性来覆盖Flex容器的align-items属性,从而控制Flex项目在侧轴上的对齐方式。

(3)设置Flex项目的弹性伸缩比例

Flex项目的弹性伸缩比例控制Flex项目的弹性伸缩性,在使用Flex布局时非常重要。

(4)设置Flex项目的排序顺序

Flex项目默认按照原始顺序一个挨着一个排列,可以通过order属性来修改它们的排序顺序。

5. Flex布局的实例演示

下面以两个列和三列的布局为例,演示Flex布局的实际应用。

(1)两个列的布局

HTML代码如下:

```html

左边栏

主内容区

```

CSS代码如下:

```css

.container {

display: flex;

height: 300px;

}

.box {

flex: 1;

text-align: center;

background-color: #eee;

padding: 20px;

margin: 10px;

border-radius: 5px;

}

.box:first-child {

background-color: #aaa;

color: #fff;

}

```

效果图如下:

![两个列的布局](/gh/leeleilei/CDN/learn/flex1.png)

(2)三个列的布局

HTML代码如下:

```html

左边栏

主内容区

右边栏

```

CSS代码如下:

```css

.container {

display: flex;

height: 300px;

}

.box {

flex: 1;

text-align: center;

background-color: #eee;

padding: 20px;

margin: 10px;

border-radius: 5px;

}

.box:first-child {

background-color: #aaa;

color: #fff;

}

.box:last-child {

background-color: #666;

color: #fff;

}

```

效果图如下:

![三个列的布局](/gh/leeleilei/CDN/learn/flex2.png)

6. Flex布局的兼容性

Flex布局虽然比较新,但是得到了主流浏览器的广泛支持,同时也有一些常见的问题需要我们注意:

(1)IE浏览器的兼容性相对较差,只有IE10以上才支持Flex布局,IE9及以下版本不支持。

(2)Safari浏览器存在一些兼容性问题,需要在布局时注意。

(3)Flex布局对于一些特殊场景的支持不太完善,例如多行文本截断、卡片样式等。

因此,在使用Flex布局时,我们需要注意兼容性问题,并且在一些特殊场景下,需要使用其他布局方式来处理。同时在不同浏览器中测试我们的布局,以保证它们在各种不同环境下的表现效果和稳定性。

display属性用来定义一个容器的布局模式,有以下几种可选值:

- flex:定义一个容器使用 Flex 布局

- inline-flex:定义一个容器使用内联的 Flex 布局

- none:定义一个容器不使用 Flex 布局

2. flex-direction属性

flex-direction属性用来指定主轴的方向,有以下可选值:

- row:默认值,主轴方向为水平方向,起点在左端

- row-reverse:主轴方向为水平方向,起点在右端

- column:主轴方向为垂直方向,起点在上方

- column-reverse:主轴方向为垂直方向,起点在下方

3. flex-wrap属性

flex-wrap属性用来指定如何换行,有以下可选值:

- nowrap:默认值,不换行

- wrap:换行,第一行在上方或左边

- wrap-reverse:换行,第一行在下方或右边

4. justify-content属性

justify-content属性用来定义主轴上的对齐方式,有以下可选值:

- flex-start:默认值,左对齐或上对齐

- flex-end:右对齐或下对齐

- center:居中对齐

- space-between:两端对齐,项目之间的间隔相等

- space-around:每个项目两侧的间隔相等

5. align-items属性

align-items属性用来定义交叉轴上的对齐方式,有以下可选值:

- flex-start:交叉轴的起点对齐

- flex-end:交叉轴的终点对齐

- center:交叉轴居中对齐

- baseline:项目的第一行文字的基线对齐

- stretch:默认值,交叉轴方向占满整个容器

6. align-content属性

align-content属性用来定义多根轴线的对齐方式,仅在容器有多根轴线时才有效果,有以下可选值:

- flex-start:起点对齐

- flex-end:终点对齐

- center:居中对齐

- space-between:两端对齐,轴线之间的间隔平均分布

- space-around:每个轴线两侧的间隔相等

- stretch:默认值,轴线占满整个交叉轴

7. flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,表示不放大。如果有剩余空间,即使该项目已经达到了设置的宽度,也会继续放大。

8. flex-shrink属性

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

9. flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间,默认值为auto,即项目的本来大小。

10. flex属性

flex属性是flex-grow、flex-shrink和flex-basis的缩写,默认值为0 1 auto。该属性有两个快捷值:auto(1 1 auto)和none(0 0 auto)。

11. order属性

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

12. align-self属性

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。