**
Flex布局
**
对flex布局理解
flex布局,即为弹性布局,他可以扩展和收缩flex容器内的元素,弹弹弹~~任何一个容器都可以设为flex布局。如下:
display:flex;
基本概念
采用flex布局的元素,成为flex容器,它的所有子元素会自动成为容器的成员,成为flex项目。
容器默认有2根轴,主轴以及交叉轴。主轴开始的位置称为(main start),主轴结束的位置称为(main end)。同理 ,交叉轴开始的位置称为(cross start),交叉轴结束的位置称为(cross end)。在容器中,每个项目的宽度称为(main size),每个项目的高度称为(cross size)。如下图(手绘^ - ^卡哇伊呐~)
属性(设置在容器上)
用于父元素上的属性 | 作用 |
---|---|
flex-direction | 定义子项在容器内的排列方向 |
flex-wrap | 定义子项在容器内的换行结果 |
flex-flow | 是flex-direction和flex-wrap简写的形式,默认横排row,不换行nowrap |
justify-content | 定义子项在容器内主轴对齐方式 |
align-items | 定义子项在容器内的交叉轴对齐方式 |
align-content | 定义多行子项在容器内整体垂直对齐方式 |
flex-direction详解(确认主轴方向):
- flex-direction:row (默认,子项排列方式从左到右)
- flex-direction:column(子项排列方式从上到下)
- flex-direction:row-reverse(子项排列方式从右到左)
- flex-direction:column-reverse(子项排列方式从左到右)
flex-wrap详解(子项沿主轴方向排列):
- flex-wrap:nowrap(默认 ,不换行)
- flex-wrap:wrap(换行,第一行在上)
- flex-wrap:wrap-reverse(换行,第一行在下)
flex-flow详解(flex-direction和flex-wrap简写)
flex-flow:row nowrap;(默认)
justify-content详解(在主轴对齐的方式)
- flex-start:沿主轴方向对齐(默认)
- flex-end:沿主轴反方向对齐
- center:居中
- space-between:两端对齐,项目之间间隔相等
- space-around:每个项目的两侧间隔相等
align-items详解(在交叉轴对齐的方式)
- flex-start:沿交叉轴方向对齐
- flex-end:沿交叉轴反方向对齐
- center:居中
- baseline:项目的第一行文字的基线对齐
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
align-content属性
定义多根轴对齐的方式,若只有一根轴线,该属性不起作用
- flex-start:与交叉轴的起点对齐。
- flex-end:与交叉轴的终点对齐。
- center:与交叉轴的中点对齐。
- space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
- space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
- stretch(默认值):轴线占满整个交叉轴。
demo
附上代码块,可自行更改父元素的属性值,调试元素样式。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.flex{
background: wheat;
height:300px;
width:400px;
display:flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-around;
align-items: flex-end;
}
</style>
</head>
<body >
<div class="flex">
<div style="background: chartreuse; height: 100px;width: 100px;">1</div>
<div style="background: coral; height: 100px;width: 100px;">2</div>
<div style="background: chartreuse; height: 100px;width: 100px;">3</div>
<div style="background: coral; height: 100px;width: 100px;">4</div>
<div style="background: chartreuse; height: 100px;width: 100px;">5</div>
<div style="background: coral; height: 100px;width: 100px;">6</div>
</div>
</body>
</html>
页面显示效果:
未完待续~~