grid-template
是 grid-template-areas
, grid-template-rows
和 grid-template-columns
三个属性的简写,用以定义网格中的 分区、行和列 。
取值:
-
none:将
grid-template-rows
,grid-template-columns
,grid-template-areas
三个属性设置为关键字none
,意味着没有明确的网格,没有命名的网格区域。行 和 列 将隐式生成, 他们的大小将由grid-auto-rows
和grid-auto-columns
属性决定。/* Keyword value */ grid-template: none;
-
< grid-template-rows > / < grid-template-columns >:设置
grid-template-rows
和grid-template-columns
指定的值,并设置grid-template-areas
为none
。 -
[ < line-names >? < string > < track-size >? < line-names >? ] + [ / < explicit-track-list > ]?:< line-names >是网格名称, < string >是
grid-template-areas
的名称,< track-size > 是grid-template-rows
的值(无具体的值则设置成auto
) ,然后按这种方式依次拼接。/ 后的 < explicit-track-list > 是grid-template-columns
的值。grid-template: [header-left] "head head" 30px [header-right] [main-left] "nav main" 1fr [main-right] [footer-left] "nav foot" 30px [footer-right] / 120px 1fr;
上面代码将创建 第一行的高度是30px ,第三行的高度是30px,中间行的高度填满剩余的高度;第一列宽度120px,剩下宽度填满剩余的列(第二列)。
举例:
html部分:
<div class="container">
<header>Header</header>
<nav>Nav</nav>
<main>Main area</main>
<footer>Footer</footer>
</div>
css关键代码:
.container {
display: grid;
height: 100vh;
grid-template:
[header-left] "head head" 50px [header-right]
[main-left] "nav main" 1fr [main-right]
[footer-left] "nav foot" 150px [footer-right]
/ 180px 1fr;
}
header {
grid-area: head;
}
nav {
grid-area: nav;
}
main {
grid-area: main;
}
footer {
grid-column: foot;
}
最终效果:
所有代码:
<!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>grid demo</title>
<style>
* {
padding: 0;
margin: 0;
font-size: 28px;
color: #fff;
}
.container {
display: grid;
height: 100vh;
grid-template:
[header-left] "head head" 50px [header-right] [main-left] "nav main" 1fr [main-right]
[footer-left] "nav foot" 150px [footer-right]
/ 180px 1fr;
}
header {
background-color: hotpink;
grid-area: head;
}
nav {
background-color: seagreen;
grid-area: nav;
}
main {
background-color: darkorange;
grid-area: main;
}
footer {
background-color: lightblue;
grid-column: foot;
}
</style>
</head>
<body>
<div class="container">
<header>Header ( 高50px ) </header>
<nav>Nav </br>( 高1fr )</br>( 宽 180px ) </nav>
<main>Main area( 高1fr , 宽1fr) </main>
<footer>Footer ( 高150px ) </footer>
</div>
</body>
</html>