移动WEB开发之flex布局
一、flex布局体验
1、传统布局与flex布局
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
display: flex;
width: 80%;
height: 300px;
background-color: #0099FF;
justify-content: space-around;
}
div span {
/* width: 200px; */
height: 150px;
background-color: pink;
margin-right: 5px;
flex: 1;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>1</span>
<span>1</span>
</div>
</body>
</html>
效果如图
二、布局原理
三、flex布局父项常见属性
1、常见父项属性
2、flex-direction设置主轴的方向
1、主轴与侧轴
2、属性值
3、justify-content设置主轴上的子元素排列方式
div {
display: flex;
width: 80%;
height: 300px;
background-color: #0099FF;
/* justify-content: flex-start; */
/* justify-content: flex-end; */
/* justify-content: center; */
/* justify-content: space-around; */
justify-content: space-between;
}
div span {
width: 150px;
height: 100px;
background-color: purple;
}
4、flex-wrap元素是否换行
div {
display: flex;
width: 50%;
height: 300px;
background-color: #0099FF;
/* 默认不换行 */
/* flex-wrap: nowrap; */
flex-wrap: wrap;
}
div span {
width: 200px;
height: 100px;
background-color: purple;
margin-right: 10px;
}
效果如图:
5、align-items设置子元素排列(单行)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
display: flex;
width: 80%;
height: 300px;
background-color: #0099FF;
justify-content: center;
align-items: center;
}
div span {
width: 150px;
height: 100px;
background-color: pink;
margin: 10px;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>
效果如图:
6、align-content设置侧轴上子元素排列方式(多行)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
display: flex;
width: 600px;
height: 300px;
background-color: #0099FF;
flex-wrap: wrap;
/* align-content: flex-start; */
align-content: center;
}
div span {
width: 150px;
height: 100px;
background-color: pink;
margin: 10px;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
</div>
</body>
</html>
效果如图:
7、align-items和align-content的区别
8、flex-flow
四、子项flex属性使用
1、flex属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
section {
display: flex;
width: 60%;
height: 150px;
background-color: pink;
margin: 0 auto;
}
section div:nth-child(1) {
width: 100px;
height: 150px;
background-color: red;
}
section div:nth-child(2) {
flex: 1;
background-color: green;
}
section div:nth-child(3) {
width: 100px;
height: 150px;
background-color: blue;
}
p {
display: flex;
width: 60%;
height: 150px;
background-color: pink;
margin: 100px auto;
}
p span {
flex: 1;
}
p span:nth-child(2) {
flex: 2;
background-color: green;
}
</style>
</head>
<body>
<section>
<div></div>
<div></div>
<div></div>
</section>
<p>
<span>1</span>
<span>2</span>
<span>3</span>
</p>
</body>
</html>
效果如图:
2、align-self控制子项自己在侧轴上的排列方式
3、order属性定义项目的排列顺序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div {
display: flex;
width: 80%;
height: 300px;
background-color: pink;
/* 让三个子盒子沿着侧轴底侧对齐 */
/* align-items: flex-end; */
/* 我们想只让3号盒子下来底侧 */
}
div span {
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
}
div span:nth-child(2) {
/* 默认是0 -1比0小所以在前面 */
order: -1;
}
div span:nth-child(3) {
align-self: flex-end;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>
效果如图:
4、常见flex布局思路
5、背景线性渐变
注意:必须添加浏览器私有前缀-webkit-
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
width: 600px;
height: 200px;
background: -webkit-linear-gradient(left,red,blue);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
效果如图:
五、案例-携程移动端首页
效果如图