Flex基础知识

B站随便看了个视频觉得讲的不错,就搬运过来了。

原视频地址

https://www.bilibili.com/video/BV1y441187zh/

https://www.bilibili.com/video/BV1k441157hd/

整体框架

Flex解决了传统前端开发中的很多痛点,使得页面布局更加方便,就看看他是怎么做到的吧

轴向

主轴:flex-direction四个方向

image-20200509224620654

交叉轴:flex-wrap两个方向

image-20200509224635035

对齐

image-20200509225604447

主轴justify-content属性

image-20200509225037080

伸缩情况

盒子足够大

image-20200509225206047

盒子刚刚好

弹性伸缩

image-20200509225353644

交叉轴

只有一行alight-items

image-20200509225819775

多行align-content

image-20200509225931027

结合使用align-content+alight-items

既让子元素在容器交叉轴居中,又让子元素在所在行的交叉轴居中

image-20200509230146126

弹性

image-20200509230447961

宽度flex-basis

四种情况下容器大小

auto:元素的大小

像素:flex-basis的值

百分比:占父容器的比例

0或0%:初始宽度为0

image-20200509230652946

优先级

image-20200509230939571

宽度受最大最小限制

image-20200509231020007

eg:初始为100,最小为200,最后显示200px

image-20200509231110398

扩展flex-grow

扩展的是父容器剩余的而空白

按比例从0~1划分

image-20200509231338157

flex-grow=0

此时不会扩展

image-20200509231448262

flex-grow=0.5

占用剩余的一半

image-20200509231553865

flex-grow=1

剩下的全部占完

image-20200509231628009

收缩flex-shrink

image-20200509231801780

1:1:1

开始时三个子元素超出父容器

image-20200509232023126

三个子元素都设置成flex-shrink:1

将会1:1:1收缩

image-20200509232217875

中间flex-shrink:0

A2不收缩,A1、A3按宽度占满剩下空间

A1=25

A2=200

A3=75

image-20200509232342818

中间flex-shrink:2

按照1:2:1收缩,也就是说都要收缩不过A2收缩幅度是其他元素的2倍

A1=25

A2=50

A3=225

image-20200509232713973

三个属性可以合并写成flex

image-20200509233529907

案例

主轴交叉轴同时对齐

display:flex使用flex布局

image-20200509233743019

三行三列布局

从上到下

主轴方向默认从左到右,要想实现下图header在上fotter在下的样式,第一步先设置flex-direction为column。就实现了下图的效果

image-20200509234804882

从左到右

将container设置为flex容器,再将左右两边元素宽度设置为100,中间设置为flex:1=flex-grow:1就实现了下图的效果

image-20200509235352377

原文地址:https://www.cnblogs.com/renxuw/p/12861346.html