flex 间距_Flex布局不再愁

b2a18d605ce75907ca613ca00eeac083.png

Flex 布局是2009年W3C提出一种新方案, 主要用于解决响应式设计. 传统的布局基于盒状模型, 依赖  display  +  position  +  float 实现. 传统布局对于特殊的布局非常不方便, 例如垂直居中就非常不容易实现. 而 Flex 的出现可以更加简便的实现这些特殊的功能. 容器属性

1. justify-content

justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。

提示:使用 align-content 属性对齐交叉轴上的各项(垂直)。

值类型:

  • flex-start 默认值。项目位于容器的开头。 

  • flex-end 项目位于容器的结尾。

  • center 项目位于容器的中心。

  • space-between 项目位于各行之间留有空白的容器内。

  • space-around 项目位于各行之前、之间、之后都留有空白的容器内。

5fb08cecdbff32391b2264f1786e26cd.png

* 注意space-between和space-around的差别是每个item的左右边距

2. align-items 

align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

值类型:
  • stretch 默认值。元素被拉伸以适应容器。如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

  • center 元素位于容器的中心。弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

  • flex-start 元素位于容器的开头。弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。

  • flex-end 元素位于容器的结尾。弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。

  • baseline 元素位于容器的基线上。如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。

437044d9e944e0bdf98aa4c5529d28cc.png

3. flex-direction

flex-direction 属性规定灵活项目的方向。

注意:如果元素不是弹性盒对象的元素,则 flex-direction 属性不起作用

值类型:

  • row 默认值。灵活的项目将水平显示一行。

  • row-reverse 与 row 相同,但是以相反的顺序。

  • column 灵活的项目将垂直显示,正如一个列一样。

  • column-reverse 与 column 相同,但是以相反的顺序。

f7ecd564681ce3d5e016155ddb3671cc.png

4. order

order 属性 设置或检索弹性盒模型对象的子元素出现的顺序。。

注意:如果元素不是弹性盒对象的元素,则 order 属性不起作用。

值类型:

  • number 默认值是 0。规定灵活项目的顺序。

fc7c3083f72bc0663b8b63fde895e52d.png

5. align-self

align-self 属性定义flex子项单独在侧轴(纵轴)方向上的对齐方式。

注意:align-self 属性可重写灵活容器的 align-items 属性

值类型:

  • auto 默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 "stretch"。

  • stretch 元素被拉伸以适应容器。如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

  • center 元素位于容器的中心。弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

  • flex-start 元素位于容器的开头。弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。

  • flex-end 元素位于容器的结尾。弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。

  • baseline 元素位于容器的基线上。如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。

c629b8796231d04b572db23bc3792b0b.png

#pond {      display: flex;      align-items: flex-start; }.yellow {   align-self: flex-end;}

73db9c7aeb1fab893eb6bcb0c1fb7dcd.png

#pond {      display: flex;      align-items: flex-start; } .yellow {        align-self:flex-end;   order: 1; }

6. flex-wrap

flex-wrap 属性规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。。

注意:如果元素不是弹性盒对象的元素,则 flex-wrap 属性不起作用

值类型:

  • nowrap 默认值。规定灵活的项目不拆行或不拆列。

  • wrap 规定灵活的项目在必要的时候拆行或拆列。

  • wrap-reverse 规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。

94ca7a1d02a0dfdd32ba3daffa84f5e6.png

// 除了这种写法flex-direction: column;flex-wrap: wrap;// 还可以用以下方法代替flex-flow: column wrap;

7. align-content 

align-content 属性在弹性容器内的各项没有占用交叉轴上所有可用的空间时对齐容器内的各项(垂直)。

提示:使用 justify-content 属性对齐主轴上的各项(水平)。

注意:容器内必须有多行的项目,该属性才能渲染出效果。

值类型:

  • stretch 默认值。元素被拉伸以适应容器。各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于'flex-start'。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。

  • center 元素位于容器的中心。各行向弹性盒容器的中间位置堆叠。各行两两紧靠住同时在弹性盒容器中居中对齐,保持弹性盒容器的侧轴起始内容边界和第一行之间的距离与该容器的侧轴结束内容边界与第最后一行之间的距离相等。(如果剩下的空间是负数,则各行会向两个方向溢出的相等距离。)

  • flex-start 元素位于容器的开头。各行向弹性盒容器的起始位置堆叠。弹性盒容器中第一行的侧轴起始边界紧靠住该弹性盒容器的侧轴起始边界,之后的每一行都紧靠住前面一行。

  • flex-end 元素位于容器的结尾。各行向弹性盒容器的结束位置堆叠。弹性盒容器中最后一行的侧轴起结束界紧靠住该弹性盒容器的侧轴结束边界,之后的每一行都紧靠住前面一行。

  • space-between 元素位于各行之间留有空白的容器内。各行在弹性盒容器中平均分布。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'flex-start'。在其它情况下,第一行的侧轴起始边界紧靠住弹性盒容器的侧轴起始内容边界,最后一行的侧轴结束边界紧靠住弹性盒容器的侧轴结束内容边界,剩余的行则按一定方式在弹性盒窗口中排列,以保持两两之间的空间相等。

  • space-around 元素位于各行之前、之间、之后都留有空白的容器内。各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'center'。在其它情况下,各行会按一定方式在弹性盒容器中排列,以保持两两之间的空间相等,同时第一行前面及最后一行后面的空间是其他空间的一半。

aba15d18ac21a544e33745ed5368d441.png

#pond {     display: flex;     flex-wrap: wrap;  align-content: flex-start;}

综合使用

25286c27dfa159247a5b6ac4adab1d51.png

#pond {     display: flex;     flex-wrap: wrap;  flex-direction: column-reverse;  align-content: center;}/** * wrap 拆行显示 * column-reverse 按column排列, 并且倒转 * center 居中 */

e8b1d5d5059fb595dc1d28fc54ce7759.png

#pond {    display: flex;   flex-direction: row-reverse;  justify-content: center;  align-items: flex-end;}/** * row-reverse 先把青蛙倒转 * center 居中 * flex-end 垂直排列到最底部 */

fb2103521b5186e2e50b6633b4772416.png

#pond {    display: flex;    flex-direction: column-reverse;  align-content: space-between;  justify-content: center;  flex-wrap: wrap-reverse;}/** * column-reverse 把青蛙倒转, 按column排列 * space-between 青蛙之间有间距 * wrap-reverse 青蛙拆行 * center 按column居中 */

分享一个有趣的学习网站

https://flexboxfroggy.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值