一.弹性盒子(flex布局)
1.flex 是 flexible Box 的缩写,是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式,任何一个容器都可以指定为 flex 布局
2.当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效
3.flex布局又叫伸缩布局 、弹性布局 、伸缩盒布局 、弹性盒布局采用 Flex 布局的元素,称为 Flex 容器(flex container)。它的所有子元素自动成为容器成员,称为 Flex(flexitem),简称"项目"
总结:flex 布局就是通过给父盒子添加 flex 属性,从而控制子盒子的位置和排列方式
二.父盒子上的属性
- flex-direction:设置主轴的方向
- justify-content:设置主轴上的子元素排列方式
- flex-wrap:设置子元素是否换行
- align-content:设置侧轴上的子元素的排列方式(多行)
- align-items:设置侧轴上的子元素排列方式(单行)
- flex-flow:复合属性,相当于同时设置了 flex-direction 和 flex-wrap
三.父盒子上的属性的取值和说明:
1.flex-direction:
主轴和侧轴是相对的,flex-direction 设置谁为主轴,谁就是主轴而另外子元素是跟着主轴来进行排列的
row; 默认值从左到右
row-reverse; 从右到左
column; 从上到小
column-revers; 从下到上
eg:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {
margin: 0px;
padding: 0px;
}
#box {
display: flex;
/* flex-direction: row; 水平方向,起点在左端; */
flex-direction: row-reverse; /* //水平方向,起点在右端;
flex-direction: column; //垂直方向,起点在上沿;
flex-direction: column-reverse;//垂直方向,起点在下沿。 */
}
#div1, #div2, #div3 {
width: 300px;
height: 200px;
}
#div1 {
background-color: #859aff;
}
#div2 {
background-color: #9d4c48;
}
#div3 {
background-color: #58a429;
}
</style>
<title>弹性盒子</title>
</head>
<body>
<div id="box">
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</div>
</body>
</html>
效果:
2.justify-content:
flex-start; 从头开始
flex-end; 从尾部开始
center; 主轴居中对齐
space-between; 平分剩余空间
space-around; 两边贴边,再分剩余空间
3.flex-wrap
设置是否换行,默认不换行
nowrap; 不换行
wrap; 换行
4.align-content
flex-start; 从头部开始
flex-end; 从尾部开始
center; 居中显示
stretch ;拉伸
space-between; 平分剩余空间
space-around; 两边贴边,再分剩余空间
5.align-items
flex-start; 从头部开始
flex-end; 从尾部开始
center; 居中显示
stretch; 拉伸
6.flex-flow
语法:
flex-flow:row wrap;
四.子盒子上的属性
1.flex 子盒子占的份数
2.align-self 控制子项自己在侧轴的排列方式
3.order 属性定义子项的排列顺序(前后顺序)
五.子盒子上的属性的取值和说明:
1.flex :
flex 属性定义子项目分配剩余空间,用flex来表示占多少份数。
flex: <number>; /* 默认值 0 */
2.align-self
align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。
默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。
/* 设置自己在侧轴上的排列方式 */
align-self: flex-end;
==3.order ==
数值越小,排列越靠前,默认为0。
order: <number>;