居中演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>居中演示</title>
<style type="text/css">
div {
width: 200px;
height: 200px;
border-radius: 20px;
color: white;
background-color: #cb4042;
text-align: center;
margin: auto;
/*四个0撑满浏览器窗口,又因为都说auto所以自动划分*/
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
span {
font-size: 20px;
line-height: 200px;
}
.container {
width: 500px;
height: 500px;
position: relative;
background-color: #40cbc9;
}
</style>
</head>
<body>
<div class="container"><div><span>中</span></div></div>
</body>
</html>
单列布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>单列布局</title>
<style type="text/css">
header,main,footer {
max-width: 1024px;
margin: 0 auto;
text-align: center;
}
header {
background-color: lightblue;
height: 50px;
line-height: 50px;
}
main {
background-color: pink;
height: 200px;
line-height: 200px;
}
footer {
background-color: lightblue;
height: 50px;
line-height: 50px;
}
</style>
</head>
<body>
<header>头部</header>
<main>内容</main>
<footer>尾部</footer>
</body>
</html>
双飞翼布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>双飞翼布局</title>
<style type="text/css">
header {
width: 100%;
height: 30px;
background-color: red;
}
main{
overflow: hidden;
}
.container {
width: 100%;
float: left;
}
.center {
height: 500px;
margin: 0 200px;
background-color: cornsilk;
}
.left {
height: 500px;
float: left;
width: 200px;
background: pink;
margin-left: -100%;
}
.right {
height: 500px;
float: left;
width: 200px;
background: aqua;
margin-left: -200px;
}
footer {
height: 30px;
width: 100%;
background-color: red;
}
</style>
</head>
<body>
<header></header>
<main>
<div class="container">
<div class="center"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</main>
<footer></footer>
</body>
</html>
圣杯布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圣杯布局</title>
<style type="text/css">
body {
min-width: 600px;
}
main {
padding: 0 200px;
}
.column {
float: left;
}
#center {
width: 100%;
height: 500px;
background-color: cornsilk;
}
#left {
width: 200px;
height: 500px;
margin-left: -100%;
position: relative;
right: 200px;
background-color: pink;
}
#right {
width: 200px;
height: 500px;
margin-right: -200px;
background-color: lightblue;
}
header {
height: 30px;
background-color: red;
}
footer {
height: 30px;
background-color: red;
clear: both;
}
</style>
</head>
<body>
<header></header>
<main>
<div id="center" class="column"></div>
<div id="left" class="column"></div>
<div id="right" class="column"></div>
</main>
<footer></footer>
</body>
</html>
瀑布流布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>瀑布流布局</title>
<Style type="text/css">
body {
background-color: lightblue;
margin: 10px;
}
#page {
margin: 0 auto;
max-width: 888px;
column-count: 3;
column-gap: 13px;
column-fill: auto;
}
.text {
background-color: aqua;
font-size: 15px;
font-family: Arial, Helvetica, sans-serif;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 0 5px pink;
}
</Style>
</head>
<body>
<div id="page">
<div class="text">
<p>1Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minusneque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
<div class="text">
<p>2Lorem ipsum dolor sit amet conseLorem ipsum dolor sit amet. Eum dolor eligendi atque, expedita voluptatem odio ex minusneque explicabo excepturi maxime animi nulla sit totamt quibusdam autem!ctetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
<div class="text">
<p>3Lorem ipsum dolor Eum dolor eligendi atque, expedita voluptatem odio ex minus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
<div class="text">
<p>4Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
<div class="text">
<p>5Lorem ipsum dolor sit amet consectetur adipisicing Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minusneque explicabo excepturi maxime animi Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minusneque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem! nulla sit totam molestias placeat repellat</p>
</div>
<div class="text">
<p>6Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minusneque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem! consectetur adipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio ex minus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
<div class="text">
<p>6Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum dolor eligendi atque,expedita voluptatem odio ex minusneque explicabo excepturi maxime animi nulla sit totam molestias placeatrepellat quibusdam autem! consectetur ipisicing elit. Eum dolor eligendi atque, expedita voluptatem odio exminus neque explicabo excepturi maxime animi nulla sit totam molestias placeat repellat quibusdam autem!</p>
</div>
</div>
</body>
</html>
弹性盒布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>弹性盒布局</title>
<style type="text/css">
.flex-container {
display: flex;
background-color: pink;
}
.inline-flex-container {
display: inline-flex;
flex-wrap: wrap-reverse;
flex-direction: column-reverse;
background-color: pink;
}
.flex-container > div, .inline-flex-container > div {
margin: 50px;
padding: 20px;
color: white;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="flex-container">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
<div>Five</div>
</div>
<br>
<div class="inline-flex-container">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
<div>Five</div>
</div>
</body>
</html>
主轴和垂轴
column和row
主轴上的对齐方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主轴上的对齐方式</title>
<style type="text/css">
.flex-container {
display: flex;
justify-content: center;
flex-direction: column;
height: 800px;
background-color: pink;
}
.flex-container > div {
margin: 20px;
padding: 20px;
color: white;
background-color: lightblue;
}
/*把one和six交换位置 安排弹性元素的显示顺序*/
.flex-container > div:nth-of-type(1){
order: 1;
}
.flex-container > div:nth-of-type(5){
order: -1;
}
</style>
</head>
<body>
<div class="flex-container">
<div>one</div>
<div>two</div>
<div>three</div>
<div>four</div>
<div>five</div>
<div>six</div>
</div>
</body>
</html>
垂轴上的对齐
- align-items在外面设置,align-self在单个元素设置,
- align-content在wrap的情况下才可以把内容在垂轴上对齐
- align-items以弹性元素里面的内容为单位,align-content以一整行弹性元素为单位进行对齐
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>垂轴上的对齐</title>
<style type="text/css">
.flex-container {
display: flex;
height: 888px;
flex-wrap: wrap;
align-items: flex-start;
align-content: space-between;
background-color: pink;
}
.flex-container > div {
margin: 20px;
padding: 20px;
color: white;
background-color: lightblue;
}
.special {
align-self: flex-end;
}
</style>
</head>
<body>
<div class="flex-container">
<div>one</div>
<div style="font-size: 2em;">two<br>two</div>
<div class="special">three<br>three<br>three</div>
<div>four<br>four<br>four<br></div>
<div>five<br>five<br>five<br>five<br>five</div>
</div>
</body>
</html>
压缩和放大弹性元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>压缩弹性元素</title>
<style type="text/css">
.flex-container {
display: flex;
width: 1024px;
background-color: pink;
}
.flex-container > div {
width: 250px;
margin: 20px;
padding: 20px;
color: white;
text-align: center;
background-color: lightblue;
}
/*当给定的宽度不足以容纳所有的元素时,弹性元素就会压缩,flex-shrink属性可以设置压缩等级*/
.shrink2 {
flex-shrink: 2;
}
.shrink4 {
flex-shrink: 4;
/*当压缩太严重时,最小限额20+20px的内外边距还是要保持的,所以就不能压缩了*/
}
</style>
</head>
<body>
<div class="flex-container">
<div>one</div>
<div>two</div>
<div class="shrink2">three</div>
<div class="shrink4"></div>
<div>five</div>
</div>
</body>
</html>
同理,放大弹性元素使用flex-grow
设置弹性基准
- flex-basis设置的是元素在主轴上占的初始长度
- 而且如果有width或者height,那么flex-basis会将其覆盖
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>设置弹性基准</title>
<style type="text/css">
.flex-container {
display: flex;
width: 1024px;
background-color: pink;
flex-direction: column;
}
.flex-container>div {
width: 80px;
margin: 20px;
padding: 20px;
color: white;
text-align: center;
background-color: lightblue;
}
.basis3 {
flex-basis: 300px;
}
</style>
</head>
<body>
<div class="flex-container">
<div>one</div>
<div>two</div>
<div class="basis3">three</div>
<div>four</div>
<div>five</div>
</div>
</body>
</html>
小结:
- 两个弹性元素的边距不会发生塌陷或者折叠
- 弹性元素是不能设置浮动的,想要让它浮动,脱离弹性必须使用
position: absolute
实现 - flex是
flex-grow
/flex-shrink
/flex-basis
的简写 flex: auto
相当于1 1 autoflex:none
相当于0 0 auto