Flex布局学习笔记
0. 前言
这是当前最常用的布局方案,没有之一。当我回想时,我才发现自己对Flex布局如此不熟悉。所以写篇博客,既当学习笔记,又当知识分享。
1. 是什么
通常又被称为Flexbox
,是一种一维布局的模型。因其一次只能处理一个维度上的元素布局:一行或者一列[2]。
我们可以使用如下语句将一个标签声明为使用flex
布局。如下面代码所示。被声明的标签即成为flex
容器。
<div class="flexbox"> </div> <style> .flexbox{ /*声明某标签为flexbox*/ display: flex; } /*也可以使用inline-flex语句声明*/ .flexbox{ display: inline-flex; } </style> 复制代码
下面的示例代码显示效果如下:
HTML
代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div class="flexbox"> <div id="one"></div> <div id="two"></div> </div> </body> </html> 复制代码
CSS
代码(stylus
):
.flexbox display flex #one border 10vw solid red #two border 10vw solid blue 复制代码
2. 改变flex流方向
可以通过flex-direction
改变。可以取4个值:
row
(默认值)row-reverse
column
column-reverse
将第一部分示例代码改变flex-direction
为row-reverse
之后显示效果如下:
将第一部分示例代码改变flex-direction
为column
之后显示效果如下:
将第一部分示例代码改变flex-direction
为column-reverse
之后显示效果如下:
Flexbox
使用双轴对齐方案:main axis
(主轴)与cross axis
(交叉轴)。
当flex-direction
属性为row
或row-reverse
时:main axis
是x
轴,cross axis
是y
轴。当flex-direction
属性为column
或column-reverse
时:反过来。
如何判定方向:当主轴为x
轴,且flex-direction
取值为row
时,起点是左,终点是右。其他取值同理。
flex容器
采用了flexbox
的区域即flex容器。所有的flex容器都有如下行为:
元素排列为一行或一列。(由
flex-direction
决定)元素从主轴的起点开始
元素不会在主维度方向拉伸,但可以缩小
元素被拉伸来填充交叉轴大小
flex-basis
默认取值为auto
flex-wrap
默认取值为nowrap
如果有太多元素超出容器,那么它们会溢出而不会换行。
作者:拜仁的月饼
链接:https://juejin.cn/post/7019956075541561352