CSS Flex 布局详解

2023-01-07 14:05:53 阅读:1063 评论:0 点赞:0

一、基本概念

1.1 什么是 Flex 布局

flex 就是 Flexible Box 的缩写,意思就是弹性盒子布局的意思。

1.2 Flex 布局的主要作用

  • 解决元素居中问题
  • 自动弹性伸缩,合适适配不同大小的屏幕,和移动端

1.3 Flex 布局的简单介绍

Flex 布局就是规定 Flex 盒子里面元素横向和纵向的对齐方式和伸缩方式。
d88cebed-f2a9-40cb-bd8a-8974c43302c2

二、盒子容器 Container 的属性

flex-direction:   主轴方向
flex-wrap:        主轴一行满了换行
flex-flow:        flex-direction 和 flex-wrap 的组合
justify-content:  主轴元素对齐方式
align-items:      交叉轴元素对齐方式//单行
align-content:    交叉轴行对齐方式//多行

2.1 flex-direction

flex-direction 用来设置主轴方向,即决定元素的布局方向:

row: (默认值)主轴为水平方向,起点在左端。
row-reverse: 主轴为水平方向,起点在右端。
column: 主轴为垂直方向,起点在上沿。
column-reverse: 主轴为垂直方向,起点在下沿。

6fe00fdb-57f5-4bb5-8ac0-caba02001caf
367fbbf0-4171-4e24-bf6b-393f09ebe1f4
60dc9949-5422-4f26-9ef7-a6d45421d4ba
35f7ae65-1f3a-41fa-9aa4-9615ea2061e2

2.2 flex-wrap

flex-wrap 主轴一行满了换行

nowrap: (默认值) 不换行压缩宽度
wrap:   换行
wrap-reverses: 反向换行

ee346edd-2fe9-4e9e-8f1d-38c9b42ea799
eb376bcb-d822-4f0f-ad96-0460dd1a475f
4eec157f-cb78-4a65-80f4-00ff703d2b79

2.3 flex-flow

flex-low: [flex-direction] [flex-wrap]

2.4 justify-content

justify-content 主轴元素对齐方式,这里是元素的对齐,区别于刚刚的「方向」

flex-start:    默认,靠着main-start对齐//参考常见术语(一般是左方向)
flex-end:      靠着main-end对齐//参考常见术语(一般是右方向)
center:        靠着主轴居中对齐//一般就是居中对齐
space-between: 两端对齐,靠着容器壁,剩余空间平分
space-around:  分散对齐,不靠着容器壁,剩余空间在每个项目二侧平均分配
space-evenly:  平均对齐,不靠着容器壁,剩余空间平分

ff12075c-f8d4-4cf7-8ad9-281e47623b7f
b444c113-b177-4c9f-9d5a-6f664308ee47
4f20ece0-66a5-4e21-9712-1ec2ff2b90f7
f39c1ebe-190e-4a6f-a2db-b653084528e0
9ab3ef82-b4d1-4697-8d26-00b08cea15c1

2.5 align-items

flex-start: 交叉轴的起点对齐。
flex-end: 交叉轴的终点对齐。
center: 交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch: (默认值)伸展,如果项目未设置高度或设为auto,将占满整个容器的高度。

2.6 align-content

align-content 交叉轴行对齐方式多行;

flex-start: (每一行)(默认)靠着cross-start对齐//参考常见术语(一般是左方向)
flex-end:    (每一行)靠着cross-end对齐//参考常见术语(一般是右方向)
center:      (每一行)靠着cross线居中对齐//一般就是居中对齐
space-between:  (每一行)两端对齐,靠着容器上下壁,剩余空间平分
space-around:   (每一行)分散对齐,不靠着容器壁,剩余空间在每个项目二侧平均分配
strentch:      (每一行)伸缩,占满整个高度

三、对于元素的属性

flex-grow: 伸展
flex-shrinik: 缩小
align-self: 覆盖container align-items 属性
order: 排序
flex-basis: 有效宽度

3.1 flex-grow

flex-grow 用来设置当前项目分配主轴剩余空间的比例,剩余空间是容器的大小减去所有元素的大小,若所有元素的定义的 flex-grow 相同,则剩余空间等比分配,否则由其定义的比例进行分配。

3.2 flex-shrinik

flex-shrinikflex-grow 刚好相反,该属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。
默认值为 1,若想在空间不足时不被缩小可以设置 flex-shrinik:0, flex 元素将保持原始尺寸

3.3 align-self

align-self 用来定义 flex 元素的对齐方式。将覆盖容器的 align-items 属性值。取值如下:

auto:默认值,继承 align-items 属性值
flex-start:与交叉轴起始线对齐
flex-end:与交叉轴终止线对齐
center:与交叉轴中间线对齐: 居中对齐
stretch:在交叉轴方向上拉伸
baseline:与基线对齐(与内容相关用得极少)

3.4 order

order 定义 flex 元素的排列顺序。

3.5 flex-basis

flex-basis 用来设置 flex 元素的占用空间,将覆盖 width 设置的值。

不拘一格

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:165
一个喜欢学习的人,快来和我成为朋友吧....

登录逐梦笔记

注册逐梦笔记

已有账号?