概念
Flex 容器(flex container)
Flex 项目(flex item)
水平的主轴(main axis)垂直的交叉轴(cross axis)
主轴的开始位置(与边框的交叉点)main start,结束位置叫做main end;
交叉轴的开始位置叫做cross start,结束位置叫做cross end。
单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size
容器的属性 |
作用 |
可选参数 |
默认值 |
flex-direction |
主轴的方向 |
row|row-reverse | column | column-reverse |
row |
flex-wrap |
换行 |
nowrap | wrap | wrap-reverse |
nowrap |
flex-flow |
<flex-direction> <flex-wrap> |
|
row nowrap |
justify-content |
主轴对齐方式 |
flex-start | flex-end | center | space-between | space-around |
flex-start |
align-items |
交叉轴对齐 |
flex-start | flex-end | center | baseline | stretch |
stretch |
align-content |
多根轴线的对齐方式 |
flex-start | flex-end | center | space-between | space-around | stretch |
stretch |
项目的属性 |
作用 |
可选参数 |
默认值 |
order |
排列顺序 |
<integer> |
0 |
flex-grow |
放大比例 |
<number> |
0 |
flex-shrink |
缩小比例 |
<number> |
1 |
flex-basis |
项目占据的主轴空间 |
<length> |
auto |
flex |
<flex-grow> <flex-shrink> <flex-basis> |
|
0 1 auto |
align-self |
项目对齐方式 |
auto | flex-start | flex-end | center | baseline | stretch |
auto |
1、基础样式
h2{ text-align: center; } .main{ display: flex; flex-wrap: wrap; width: 680px; justify-content: space-between; } .container{ display: flex; width: 320px; height: 320px; flex-wrap: wrap; justify-content: space-between; align-content:space-between; } .box{ width: 90px; height: 90px; background-color: #EEEEEE; padding: 5px; border-radius: 5px; display: flex; flex-wrap: wrap; } .row{ display: flex; flex-basis: 100%; } .item{ width: 24px; height: 24px; background-color: #000000; margin: 3px; border-radius: 50%; } /*排列方向*/ .flex-direction-column{ flex-direction: column; } /*水平排列*/ .justify-content-center{ justify-content: center; } .justify-content-flex-end{ justify-content: flex-end; } .justify-content-space-between{ justify-content: space-between; } /*垂直排列*/ .align-items-center{ align-items: center; } .align-items-flex-end{ align-items: flex-end; } .align-items-space-between{ align-items: space-between; } /*多轴对齐*/ .align-content-space-between{ align-content: space-between; } /*项目排列*/ .align-self-center{ align-self: center; } .align-self-flex-end{ align-self: flex-end; }
2、单项目
代码如下
<div class="container"> <div class="box"> <span class="item"></span> </div> <div class="box justify-content-center"> <span class="item"></span> </div> <div class="box justify-content-flex-end"> <span class="item"></span> </div> <div class="box align-items-center"> <span class="item"></span> </div> <div class="box justify-content-center align-items-center"> <span class="item"></span> </div> <div class="box justify-content-flex-end align-items-center"> <span class="item"></span> </div> <div class="box align-items-flex-end"> <span class="item"></span> </div> <div class="box justify-content-center align-items-flex-end"> <span class="item"></span> </div> <div class="box justify-content-flex-end align-items-flex-end"> <span class="item"></span> </div> </div>
3、双项目
<div class="container"> <div class="box"> <span class="item"></span> <span class="item"></span> </div> <div class="box"> <span class="item"></span> <span class="item align-self-center"></span> </div> <div class="box justify-content-space-between"> <span class="item"></span> <span class="item align-self-flex-end"></span> </div> <div class="box justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> <div class="box justify-content-space-between align-items-center"> <span class="item"></span> <span class="item"></span> </div> <div class="box justify-content-space-between align-items-flex-end"> <span class="item"></span> <span class="item"></span> </div> <div class="box justify-content-space-between flex-direction-column"> <span class="item"></span> <span class="item"></span> </div> <div class="box justify-content-space-between align-items-center flex-direction-column"> <span class="item"></span> <span class="item"></span> </div> <div class="box justify-content-space-between align-items-flex-end flex-direction-column"> <span class="item"></span> <span class="item"></span> </div> </div>
4、多项目
<div class="container"> <div class="box"> <span class="item"></span> <span class="item align-self-center"></span> <span class="item align-self-flex-end"></span> </div> <div class="box justify-content-flex-end align-content-space-between"> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> <div class="box align-content-space-between"> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> </div> <div class="box align-content-space-between"> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> <div class="box align-content-space-between flex-direction-column"> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> <div class="box"> <div class="row"> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> <div class="row justify-content-center"> <span class="item"></span> </div> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> </div> <div class="box"> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> </div>
5、骰子6点
<div class="container"> <div class="box justify-content-center align-items-center"> <span class="item"></span> </div> <div class="box justify-content-space-between"> <span class="item"></span> <span class="item align-self-flex-end"></span> </div> <div class="box"> <span class="item"></span> <span class="item align-self-center"></span> <span class="item align-self-flex-end"></span> </div> <div class="box align-content-space-between"> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> </div> <div class="box"> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> <div class="row justify-content-center"> <span class="item"></span> </div> <div class="row justify-content-space-between"> <span class="item"></span> <span class="item"></span> </div> </div> <div class="box align-content-space-between flex-direction-column"> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> <span class="item"></span> </div> </div>
完成代码:
https://github.com/mouday/LearningNote/blob/master/html/flex-demo.html
其他
防止挤压
flex-shrink: 0
参考