css里flex+margin布局
css里flex+margin布局
- 居中
- 两端排列
- 依次排列
在flex+margin的布局中,margin设置auto会自动将元素剩余的空间用margin填满
居中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
* {
margin: 0;
padding: 0;
}
.container {
height: 500px;
display: flex;
border: 2px solid red;
box-sizing: border-box;
}
.item {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
background-color: #ccc;
}
.item {
margin: auto;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
</div>
</body>
</html>
两端排列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>两端排列</title>
<style>
* {
margin: 0;
padding: 0;
}
.container {
display: flex;
border: 2px solid red;
box-sizing: border-box;
}
.item {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
background-color: #ccc;
}
.item:nth-child(3) {
margin-left: auto;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
</body>
</html>
依次排列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>依次排列</title>
<style>
* {
margin: 0;
padding: 0;
}
.container {
display: flex;
flex-wrap: wrap;
border: 2px solid red;
box-sizing: border-box;
}
.item {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
background-color: #ccc;
}
.container .item {
--n: 10;
/* 计算得出左右两边的间距:元素剩余的空间 / 元素个数 / 2 */
--gap: calc((100% - 100px * var(--n)) / var(--n) / 2);
margin: 20px var(--gap);
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
<div class="item">11</div>
<div class="item">12</div>
<div class="item">13</div>
<div class="item">14</div>
<div class="item">15</div>
<div class="item">16</div>
<div class="item">17</div>
<div class="item">18</div>
<div class="item">19</div>
<div class="item">20</div>
<div class="item">21</div>
<div class="item">22</div>
</div>
</body>
</html>