9.flex布局
9.1定义弹性盒子
特点
:自动计算宽高和不换行
在父容器样式
里面写上
.box{
display:flex;
display:-webkit-flex;
}
设置弹性盒子的兼容性
- -webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
9.2容器属性
有以下几个
可参照弹性盒子布局(阮一峰)
https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
9.2.1flex-direction 定义子项的顺序
row(默认)
:起点在左边,水平排列
9.2.2.1.row-reverse:主轴为水平方向,起点在右端
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
/*
定义弹性盒子flex
容器的属性
flex-direction 定义子项的顺序
row(默认):起点在左边,水平排列
row-reverse:主轴为水平方向,起点在右端
column:垂直排列,起点在面
column-reverse:垂直排列,起点下面
flex-wrap:定义子项是否换行
nowrap不换行
wrap换行
wrap-reverse换行(倒叙)
flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
justify-content定义子项目横向对齐方式(横轴)
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间有间隔
space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
align-items:定义纵向的对齐方式(纵轴方向)
flex-start:交叉轴的起点(顶部)对齐
flex-end:交叉轴的重点(底部)对齐
center:交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐
stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
*/
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
/* 设置弹性盒子
-webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
*/
display: flex;
display: -webkit-flex;
flex-direction: row-reverse;
}
div.box>div{
width: 380px;
height: 480px;
background: #ffaa00;
margin: 10px;
}
</style>
</head>
<body>
<div class="box">
<div class="d1">1</div>
<div class="d1">2</div>
<div class="d1">3</div>
<div class="d1">4</div>
<!-- <div class="d1">5</div>
<div class="d1">6</div>
<div class="d1">7</div>
<div class="d1">8</div>
<div class="d1">9</div>
<div class="d1">10</div> -->
</div>
</body>
</html>
9.2.2.2.column:主轴为垂直方向,起点在上沿。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
/*
定义弹性盒子flex
容器的属性
flex-direction 定义子项的顺序
row(默认):起点在左边,水平排列
row-reverse:主轴为水平方向,起点在右端
column:垂直排列,起点在面
column-reverse:垂直排列,起点下面
flex-wrap:定义子项是否换行
nowrap不换行
wrap换行
wrap-reverse换行(倒叙)
flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
justify-content定义子项目横向对齐方式(横轴)
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间有间隔
space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
align-items:定义纵向的对齐方式(纵轴方向)
flex-start:交叉轴的起点(顶部)对齐
flex-end:交叉轴的重点(底部)对齐
center:交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐
stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
*/
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
/* 设置弹性盒子
-webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
*/
display: flex;
display: -webkit-flex;
flex-direction: column;
}
div.box>div{
width: 380px;
height: 480px;
background: #ffaa00;
margin: 10px;
}
</style>
</head>
<body>
<div class="box">
<div class="d1">1</div>
<div class="d1">2</div>
<div class="d1">3</div>
<div class="d1">4</div>
<!-- <div class="d1">5</div>
<div class="d1">6</div>
<div class="d1">7</div>
<div class="d1">8</div>
<div class="d1">9</div>
<div class="d1">10</div> -->
</div>
</body>
</html>
9.2.2.3.column-reverse:主轴为垂直方向,起点在下沿
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
/*
定义弹性盒子flex
容器的属性
flex-direction 定义子项的顺序
row(默认):起点在左边,水平排列
row-reverse:主轴为水平方向,起点在右端
column:垂直排列,起点在面
column-reverse:垂直排列,起点下面
flex-wrap:定义子项是否换行
nowrap不换行
wrap换行
wrap-reverse换行(倒叙)
flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
justify-content定义子项目横向对齐方式(横轴)
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间有间隔
space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
align-items:定义纵向的对齐方式(纵轴方向)
flex-start:交叉轴的起点(顶部)对齐
flex-end:交叉轴的重点(底部)对齐
center:交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐
stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
*/
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
/* 设置弹性盒子
-webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
*/
display: flex;
display: -webkit-flex;
flex-direction: column-reverse;
}
div.box>div{
width: 380px;
height: 480px;
background: #ffaa00;
margin: 10px;
}
</style>
</head>
<body>
<div class="box">
<div class="d1">1</div>
<div class="d1">2</div>
<div class="d1">3</div>
<div class="d1">4</div>
<!-- <div class="d1">5</div>
<div class="d1">6</div>
<div class="d1">7</div>
<div class="d1">8</div>
<div class="d1">9</div>
<div class="d1">10</div> -->
</div>
</body>
</html>
9.2.2flex-wrap 定义子项是否换行
flex-wrap:wrap换行
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
/*
定义弹性盒子flex
容器的属性
flex-direction 定义子项的顺序
row(默认):起点在左边,水平排列
row-reverse:主轴为水平方向,起点在右端
column:垂直排列,起点在面
column-reverse:垂直排列,起点下面
flex-wrap:定义子项是否换行
nowrap不换行
wrap换行
wrap-reverse换行(倒叙)
flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
justify-content定义子项目横向对齐方式(横轴)
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间有间隔
space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
align-items:定义纵向的对齐方式(纵轴方向)
flex-start:交叉轴的起点(顶部)对齐
flex-end:交叉轴的重点(底部)对齐
center:交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐
stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
*/
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
/* 设置弹性盒子
-webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
*/
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
}
div.box>div{
width: 280px;
height: 220px;
background: #ffaa00;
margin: 10px;
}
</style>
</head>
<body>
<div class="box">
<div class="d1">1</div>
<div class="d1">2</div>
<div class="d1">3</div>
<div class="d1">4</div>
<div class="d1">5</div>
<div class="d1">6</div>
</div>
</body>
</html>
flex-wrap:wrap-reverse换行(倒叙)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
/*
定义弹性盒子flex
容器的属性
flex-direction 定义子项的顺序
row(默认):起点在左边,水平排列
row-reverse:主轴为水平方向,起点在右端
column:垂直排列,起点在面
column-reverse:垂直排列,起点下面
flex-wrap:定义子项是否换行
nowrap不换行
wrap换行
wrap-reverse换行(倒叙)
flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
justify-content定义子项目横向对齐方式(横轴)
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间有间隔
space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
align-items:定义纵向的对齐方式(纵轴方向)
flex-start:交叉轴的起点(顶部)对齐
flex-end:交叉轴的重点(底部)对齐
center:交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐
stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
*/
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
/* 设置弹性盒子
-webkit-谷歌内核
-moz- 火狐
-o- 欧鹏
-ms- IE
*/
display: flex;
display: -webkit-flex;
flex-wrap: wrap-reverse;
}
div.box>div{
width: 280px;
height: 220px;
background: #ffaa00;
margin: 10px;
}
</style>
</head>
<body>
<div class="box">
<div class="d1">1</div>
<div class="d1">2</div>
<div class="d1">3</div>
<div class="d1">4</div>
<div class="d1">5</div>
<div class="d1">6</div>
</div>
</body>
</html>
9.2.3flex-flow:flex-direction flex-wrap
是排列顺序
列和换行
的复合
9.2.4justify-content定义子项目
横向对齐方式(横轴)
-
1.
flex-start(默认值)
:左对齐 -
2.
flex-end
:右对齐 -
3.
center
:居中 -
4.
space-between
:两端对齐,项目之间有间隔 -
5.
space-around
:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
9.2.5align-items
:定义纵向
的对齐方式(纵轴方向)
1.flex-start
:Y轴的起点(顶部)对齐
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
div.box{
width: 1200px;
height: 500px;
border: 1px solid black;
margin: 0 auto;
display: flex;
display: -webkit-flex;
align-items: flex-start;
}
div.box>div{
margin: 0px 10px;
}
div.box>div:nth-child(1){
width: 280px;
height: 200px;
background: #aaff00;
}
div.box>div:nth-child(2){
width: 280px;
height: 100px;
background: #aaff7f;
}
div.box>div:nth-child(3)