栅格布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>“列”和“行”的定义</title>
<style type="text/css">
.grid-container {
display: grid;
padding: 10px;
height: calc(100vh);
grid-template-columns: 200px 50% 1fr;
/*fr可以通俗的表示为份*/
grid-template-rows: 33.33% 66.66%;
background-color: lightblue;
}
.grid-container > div {
text-align: center;
padding: 10px;
border: 1px solid white;
background-color: pink;
}
</style>
</head>
<body>
<div class="grid-container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>栅格布局演示</title>
<style type="text/css">
.item1 { grid-area: header; }
.item2 { grid-area: nav; }
.item3 { grid-area: main; }
.item4 { grid-area: aside; }
.item5 { grid-area: footer; }
.grid-container {
display: grid;
grid-template-areas:
'header header header header header'
'nav main main main aside'
'nav footer footer footer footer';
grid-template-columns: 1fr 3fr 2fr 1fr 1fr;
grid-template-rows: 1fr 5fr 1fr;
/*简写
grid-template:
'header header header header header' 1fr
'nav main main main aside' 5fr
'nav footer footer footer footer' 1fr / 1fr 3fr 2fr 1fr 1fr;
*/
grid-gap: 10px 20px;/*这里是行和列的间距的简写*/
background-color: lightblue;
padding: 10px;
}
.grid-container > div {
background-color: pink;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="item1">Header</div>
<div class="item2">Nav</div>
<div class="item3">
<div>Section1</div>
<div>Section2</div>
<div>Section3</div>
<div>Section4</div>
<div>Section5</div>
</div>
<div class="item4">Aside</div>
<div class="item5">Footer</div>
</div>
</body>
</html>
一些关键字和函数
grid-template-columns: 1fr auto 200px;
这里的auto表示能容纳文字的最小空间剩下的都给1frgrid-template-columns: min-content max-content max-content;
表示能容纳的最小和最大的空间grid-template-columns: repeat(3, 200px) repeat(3, auto);
grid-template-columns: repeat(auto-fill, 200px);
(填充数量, 宽度)grid-template-columns: 100px minmax(200px, 1fr) 50%;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
auto-fill添加无内容列
auto-fit调整每一列的宽度来适配grid-template-columns: repeat(3, fit-content(500px));
fit-content(arg):参数arg和最小值之间找一个合适的值*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>一些关键字和函数</title>
<style type="text/css">
.grid-container {
display: grid;
padding: 10px;
background-color: lightblue;
.grid-container > div {
text-align: center;
padding: 10px;
border: 1px solid white;
background-color: pink;
}
</style>
</head>
<body>
<div class="grid-container">
<div>I am a student.</div>
<div>I am a student.</div>
<div>I am a student.</div>
<div>I am a student.</div>
<div>I am a student.</div>
<div>I am a student.</div>
</div>
</body>
</html>
对齐方式
简写 | 水平 | 垂直 | 作用 |
---|---|---|---|
place-content | justify-content | align-content | 整个栅格容器内的所有元素 |
place-items | justify-items | align-items | 栅格容器中元素的内容 |
place-self | justify-self | align-self | 对齐每个网格线中的内容(这个用于单个元素) |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>栅格布局的对齐方式</title>
<style type="text/css">
.item1 { grid-area: a; }
.item2 {
grid-area: b;
justify-self: start;
}
.item3 { grid-area: c; }
.item4 { grid-area: d; }
.item5 { grid-area: e; }
.item6 { grid-area: f; }
.grid-container {
display: grid;
padding: 10px;
grid-gap: 10px;
grid-template:
'a b b c' 50px
'a d d c' 100px
'a e e f' 50px / 100px 100px 100px;
height: 333px;
/*水平方向:整个栅格容器的所有元素*/
justify-content: center;
/*垂直方向*/
/* align-content: space-around; */
/*水平方向:对齐栅格容器中元素的内容*/
justify-items: center;
background-color: lightblue;
}
.grid-container > div {
text-align: center;
padding: 10px;
border: 1px solid white;
background-color: pink;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
</div>
</body>
</html>
栅格线
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>栅格线</title>
<!--栅格元素不用填满整个栅格布局,
栅格元素之间可以相互覆盖
-->
<style type="text/css">
.grid-container {
display: grid;
grid-template-columns: repeat(10, 1fr);
grid-template-rows: repeat(10, 1fr);
background-color: lightblue;
}
.one {
grid-column-start: 4;
grid-column-end: 10;
grid-row-start: 2;
grid-row-end: 6;
z-index: 1;/*提高*/
}
.two {
grid-column: 1 / 6;
grid-row: 1 / 8;
order: 1;/*修改顺序,也能起到提高的作用*/
}
.three {
/*简写,和边框的顺序正好相反,是逆时针的*/
grid-area: 5 / 2 / 10 / 5;
}
.four {
grid-area: 6 / 4 / 9 / 9;
}
.five {
grid-area: 5 / 8 / 11 / 11;
}
.grid-container > div {
text-align: center;
padding: 10px;
border: 1px solid white;
background-color: pink;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
<div class="four">4</div>
<div class="five">5</div>
</div>
</body>
</html>
栅格元素的放置规则
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>栅格元素的放置规则</title>
<style type="text/css">
.grid-container {
display: grid;
grid-template:
100px
100px
100px / 100px 100px;
grid-auto-flow: row dense;
/*row表示水平 dense表示紧密排列*/
grid-auto-columns: 100px;
/*表示多出来的都是100px*/
}
.grid-container > div {
font-size: 2em;
text-align: center;
height: 100px;
line-height: 100px;
border: 1px solid snow;
}
.one {
background-color: aqua;
grid-column: 1 / 3;
}
.two {
background-color: blue;
}
.three {
background-color: green;
grid-column: 1 / 3;
}
.four {
background-color: pink;
}
.five {
background-color: red;
grid-column: 3 / 4;
}
.six {
background-color: yellow;
}
.seven {
background-color: lightgreen
}
.eight {
background-color: tomato
}
.nine {
background-color: orange;
}
</style>
</head>
<body>
<div class="grid-container">
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
<div class="four">4</div>
<div class="five">5</div>
<div class="six">6</div>
<div class="seven">7</div>
<div class="eight">8</div>
<div class="nine">9</div>
</div>
</body>
</html>
同弹性盒布局一样,栅格元素也不受float影响