CSS3 弹性布局

html-css012

CSS3 弹性布局,第1张

flex 是 flexible box 的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性。能够高效方便的控制元素的对齐、排列,自动计算布局内元素的尺寸,无论元素的尺寸是固定的还是动态的,控制元素在页面的布局方向。

弹性盒子由弹性容器(flex container)和弹性子元素(flex item)组成。

弹性容器设置属性 display:flex

一、容器属性

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

⑴ flex-direction 子元素排列方向

flex-direction: row从左到右

flex-direction: row-reverse从右到左

flex-direction: column从上到下

flex-direction: column-reverse从下到上

⑵ flex-wrap 子元素换行方式

flex-wrap: nowrap不换行

flex-wrap:wrap换行

flex-wrap: wrap-reverse反转 wrap 排列,行颠倒

2 justify-content 子元素沿主轴对齐方式

justify-content: flex-start

justify-content: space-between

3 align-items 子元素在交叉轴上对齐方式

align-items: center垂直方向居中

align-items:flex-start垂直方向的顶部/交叉轴的起点对齐

align-items: flex-end垂直方向的底部/交叉轴的终点对齐

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

align-items: stretch默认值,如果项目未设置高度或设为auto,将占满整个容器的高度

二、子元素属性(写在子元素下)

align-self 用于设置弹性子元素自身在侧轴(纵轴)方向上的对齐方式。允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。

align-items: center

align-items: flex-start

align-items: flex-end

align-items: baseline

align-items: stretch

order 定义子元素的排列顺序。数值越小,排列越靠前,默认为order: 0,可以为负值。

flex-grow 定义子元素的扩展比率,主要作用:分配剩余空间。负值无效。

flex-grow: 0默认值,即如果存在剩余空间,也不放大。

flex-grow: 1如果存在剩余空间,放大 ,等分剩余空间。

flex-shrink 定义子元素的收缩比率,值越大,按比例缩的就越小。

flex-shrink: 1默认值,即如果空间不足,缩小。

flex-shrink: 0不缩小。

flex-basis 定义元素的默认基准值。

设置了flex-basis,width就不起作用;同时存在的时候,优先使用flex-basis。

如果容器的宽度太小,子元素排列不下,设置的flex-basis的宽度会自动缩小,直到占满容器。

链接:https://juejin.cn/post/7038088241437736991

弹性元素是 container直接的在文档流中的子元素

container在文档流中的子元素才是弹性子元素

弹性元素的默认宽高为内容宽高

flex-direction: row|row-reverse|column|column-reverse

container内的排列顺序: 从左往右 从右往左 从上往下 从小往上(都是从container对应方向边缘开始)

flex-wrap: nowrap|wrap|wrap-reverse

order: <integer>

initial: 0

两个黄色元素没有设置order, 默认为0

flex-basis: <height>|<width>

设置的是宽还是高根据主轴来定, 如果主轴是行则设置默认宽度, 如果主轴是列则设置默认高度

flex-grow: <integer>

initial: 0

弹性元素的宽或高计算:

flex-basis + flow-grow/sum(flow-grow)*remain

flex-shrink: <integer>

initial: 1

弹性元素的宽或高计算:

flex-basis + flow-shrink/sum(flow-shrink)*remain

这里的remain是负值, 表示超出的内容大小

flex: <flex-grow>|| <flex-shrink>|| <flex-basis>

initial: 0 1 main-size ( main-size 元素沿主轴方向默认尺寸)

justify-content: flex-start | flex-end | center | space-between | space-around

效果依次如下:

align-items: flex-start | flex-end | center | stretch | baseline

align-self: auto | flex-start | flex-end | center | baseline | stretch

initial: auto

当多行时: 应用于行

align-content: flex-start | flex-end | center | space-between | space-around | stretch