不再一个个试错,这众多的flex属性

流式布局

本篇我们将从流式布局的四大方面入手,旨在认识、了解、以至于掌握其特性及功能。

为什么要用?

在我们抛弃标准流、定位流以及浮动流之后,取而代之的是flex流式布局。以一种更加优雅的方式实现元素布局。

轴的定义

在开始说它的特性之前,我们首先需要了解的是flex布局依靠的两个重要概念:主轴(一般为x轴)和交叉轴(一般为y轴)

那么我们如何改变或者说定义主轴和交叉轴呢?——flex-direction

flex-direction

graph TD
flex-direction --> row
flex-direction --> row-reverse
flex-direction --> column
flex-direction --> column-reverse 

下面以主轴为例,交叉轴即除了主轴之外的那一条,这里不再赘述。

row | row-reverse

设置了这个属性,主轴将沿着inline方向延展

1. row: 从左向右延展

2. row-reverse: 从右向左延展

column | column-reverse

主轴会沿着block方向延展

1. column: 从上向下延展

2. column-reverse: 从下往上延展

flex模块划分

graph TD
flex布局-->容器
flex布局-->轴
轴-->主轴
轴-->交叉轴
容器--> 父盒子
容器--> 子盒子
父盒子 --> justify-content
父盒子--> align-items
子盒子-->flex
子盒子-->align-self 

父盒子

justify-content(设置主轴排列)

设置主轴的排序一般包括两个方面:

1.位置排列1.flex-start 容器开头对齐2.flex-end 容器尾部对齐3.center 容器居中
2.分布排列1.space-between2.space-around

位置排列

也就是父容器在一整个占位盒子里面的位置,是在盒子开头(flex-start)、盒子中间(center)还是盒子最后flex-end。

分布排列

可以控制他的子容器们的排列状态,一般分为两部分:

space-around: 即将除盒子之外的剩余空间均分后分配在盒子中间,如上图所示 space-between: 即在上一种方式的基础上,盒子的开头和结尾也会被分配空间,不过分配的空间是子容器间的一半。

align-item(设置子容器的对齐方式)

align-items主要用于控制交叉轴元素内各个子元素的排列方式,一般将集中排列分类为位置排列基线排列拉伸排列

位置排列

子容器们的对齐方式,一般分为:

flex-start(交叉轴起始端对齐)

flex-end(交叉轴末端对齐)

center(交叉轴居中对齐)

基线排列

baseline

指内容的对齐方式是向基线(baseline)对齐,简单来说就是所有文字都处在同一水平,而baseline的高度与 根据MDN文档:侧轴起点到元素基线距离最大的元素将会于侧轴起点对齐以确定基线

拉伸排列

align-items:stretch,让盒子沿着交叉轴拉伸到和父容器一致。

子盒子

主要设置各个子容器的状态,一般分为主轴和交叉轴对子容器进行操作:

主轴:flex

flex

即设置子盒子是不是弹性的,他的伸缩比例由属性确定

交叉轴:align-self

align-self

设置子容器的排列方式

graph TD
align-self --> 按照位置排列
按照位置排列 --> flex-start
按照位置排列 --> flexend
按照位置排列 --> center
align-self --> 基线排列
基线排列 --> baseline
align-self --> 拉伸排列
拉伸排列 --> stretch 

通过以上方式可以为单个子容器设置样式。这里举个例子:我们想要单独设置第一个子容器在交叉轴的位置处于开头,可以给单一容器加上align-self:flex-start,旨在给它本身自己添加这个属性。

容易被忽略的点

三个我们比较容易忽略的属性:

1.flex-grow --> 简写为flex: 0
2.flex-shrink --> 简写为flex:1
3.flex-basis --> 简写为flex:auto
4.flex-wrap --> 换行

flex-grow

一般用于规定项在容器中分配剩余空间的相对比例,一般用于设置子容器的占比。

flex-shrink

用于子容器的收缩规则,可以设置收缩占比,比如延展2倍(flex-shrink:2)或者缩小0.6倍(flex-shrink:0.6)

flex-basis

一般用于设置元素在主轴方向上的初始大小,默认是auto,如果需要改变盒子的大小我们可以使用flex-basis对子容器的大小进行改变,如:flex-basis:200px

而我们想要通过文本大小设置容器大小的话可以通过:

1.auto
2.max-content
3.min-content
4.flex-basis test

flex-wrap

这里主要是分清wrap、nowrap和wrap-reverse的区别,相信通过下图即清晰可见

总结

css样式繁多,但是只需要按照本文的分类,即可分门别类的对流式布局进行记忆;本人一般分为父容器子容器常用属性不常用属性 以及 其常见形式进行记忆.

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值