前端知识体系构建_CSS3(Flex布局)

134 阅读4分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

弹性布局的概念

让网页自动适应不同大小的屏幕

float浮动定位的问题:如果要把多个块元素水平放在一行,要计算的要素太多,我觉得他设计出来就不是为了布局的。

弹性布局的优点:自动计算,自适应

弹性布局的容器:简称容器,就是要实现布局效果的父元素。

弹性布局的项目:父元素的子元素。

弹性布局的主轴:多个项目按x轴排列,那么x就是主轴

弹性布局的交叉轴:与主轴垂直的轴

容器的属性

使用弹性布局,都要先让父元素变成弹性布局的容器。

如果希望弹性布局的父元素独占布局中的一行,就要设置父元素的display属性为flex

如果希望弹性布局的父元素显示为行内元素的特征,与其他元素在一行,可设置父元素的display属性为inline-flex

设置父元素为flex容器后,下一步就可以设置flex容器父元素的属性,包括以下:

flex-direction

flex-direction属性,可指定容器的主轴及其排列方向。

今后,只要希望设置弹性布局项目在容器内的排列方向时,就可设置容器的flex-direction属性

属性值包括:

row,默认值,即主轴是x轴,项目从最左端开始向右排列。

row-reverse,表示项目从最右侧开始,从右向左排列

注意项目的顺序在编写时虽然是12345,但是经过 reverse反转后,实际排列的顺序变为54321

column,主轴是y轴,项目从顶端开始,从上向下排列

column-reverse, 主轴是y轴,项目从底部向上排列

flex-wrap

是否允许换行,默认他是不换行,不换行可以自动的缩放子元素

属性值有

wrap:允许换行,不再帮你自动缩放

nowrap:默认属性 不允许换行

flex-flow

是前面两者的简写形式,可以同时设置flex-direction和flex-wrap两个属性

语法格式:

flex-flow:flex-direction flex-wrap

其中,两个值之间用空格分割

比如默认值为(行,不换行)flex-flow:row nowrap

justify-content

专门定义项目在主轴上的对齐方式

属性值有

flex-start 以主轴的起点对齐

flex-end 以主轴的终点对齐

center 在主轴上居中对齐

space-between,表示两端对齐(元素与元素之间的间隙相同)

space-around,元素与元素间间隙都相同

align-items

专门定义项目在交叉轴上的对齐方式

flex-start,表示让项目以交叉轴的起点方向对齐

flex-end,表示让项目以交叉轴的终点方向对齐

center,表示让项目以交叉轴的中线居中对齐

baseline,表示让项目以交叉轴的基线对齐

stretch,表示如果项目未设置尺寸,就让项目在交叉轴上占满所有 空间。

项目的属性

order属性

order属性,专门定义项目的排列顺序。

其值为整数数字,无需单位。

值越小,越靠近起点,默认值是0。

flex-grow属性

flex-grow属性,专门定义项目的放大比例。

如果容器有足够的空间,项目可以放大。

其值为整数数字,无需单位。

默认情况,项目不放大。

取值越大,占据剩余的空间越多。

flex-shrink属性

flex-shrink属性,专门定义项目的缩小比例。

如果容器空间不足时,项目可以缩小。

缩小的比例取决于flex-shrink的值。

其默认值为1,表示空间不足时,则等比缩小。

可改为0,表示不缩小。

align-self属性

align-self属性,专门单独定义某一个项目在交叉轴上的对齐方式。

与align-items属性对比 align-items定义在父容器上约束所有项目的统一对齐方式

align-self定义在项目上,只约束当前所在的一个项目。

其取值和align-items完全一样。只是多了一个auto值,表示继承 父元素的align-items效果。