为什么在代码中使用 grid-template-rows 时 css 网格行高被破坏?
Why is css grid row height smashed when grid-template-rows is being used in code?
我刚开始学习 css 网格,我 运行 遇到了一个问题。我不知道该怎么做,但我认为我的代码没问题,因为它确实通过了验证(html 和 css)。我在我的 css 中使用了 grid-template-rows,但是显示就像没有使用过一样。如果我向我的 html 块之一添加更多文本(例如:header),那么该行将变得更高 - 因此即使使用 grid-template-rows 它也像自动一样。此外,菜单上方和下方都有白色 space。我已经为此大惊小怪了两天了,找不到问题所在。我没看错什么?
.container {
margin: 0;
padding: 0;
display: grid;
grid-template-columns: 23.2% 76.8%;
grid-template-rows: 30.0% 8.0% 50.0% 12.0%;
color: white;
}
.header {
grid-column: 1/3;
grid-row: 1/2;
background-color: red;
}
.menu {
grid-column: 1/3;
grid-row: 2/3;
background-color: blue;
}
.sidebar {
grid-column: 1/2;
grid-row: 3/4;
background-color: yellow;
}
.main {
grid-column: 2/3;
grid-row: 3/4;
background-color: green;
}
.footer {
grid-column: 1/3;
grid-row: 4/5;
background-color: orange;
}
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="./style.css">
<script src="./code.js"></script>
<title>TEST SITE</title>
</head>
<body class="container">
<header class="header">
<p>Header</p>
</header><!-- header -->
<menu class="menu">
<p>Menu</p>
</menu><!-- menu -->
<aside class="sidebar">
<p>Sidebar</p>
</aside><!-- aside -->
<main class="main">
<p>Body</p>
</main><!-- main -->
<footer class="footer">
<p>Footer</p>
</footer><!-- footer -->
</body><!-- body -->
</html><!-- html -->
Firefox 57.0.4
Opera 50.0.2762.58
使用百分比单位创建网格时,需要适当的维度链才能计算出百分比。在这里,BODY 被用作网格,因此请确保样式中包含以下行:
html, body {
width: 100%; height: 100%;
}
您应该从 body 中删除 class 容器并将其放入 div 中。您的代码应该如下所示。
<div class="container">
<header class="header">
<p>Header</p>
</header><!-- header -->
<menu class="menu">
<p>Menu</p>
</menu><!-- menu -->
<aside class="sidebar">
<p>Sidebar</p>
</aside><!-- aside -->
<main class="main">
<p>Body</p>
</main><!-- main -->
<footer class="footer">
<p>Footer</p>
</footer><!-- footer -->
</div>
我刚开始学习 css 网格,我 运行 遇到了一个问题。我不知道该怎么做,但我认为我的代码没问题,因为它确实通过了验证(html 和 css)。我在我的 css 中使用了 grid-template-rows,但是显示就像没有使用过一样。如果我向我的 html 块之一添加更多文本(例如:header),那么该行将变得更高 - 因此即使使用 grid-template-rows 它也像自动一样。此外,菜单上方和下方都有白色 space。我已经为此大惊小怪了两天了,找不到问题所在。我没看错什么?
.container {
margin: 0;
padding: 0;
display: grid;
grid-template-columns: 23.2% 76.8%;
grid-template-rows: 30.0% 8.0% 50.0% 12.0%;
color: white;
}
.header {
grid-column: 1/3;
grid-row: 1/2;
background-color: red;
}
.menu {
grid-column: 1/3;
grid-row: 2/3;
background-color: blue;
}
.sidebar {
grid-column: 1/2;
grid-row: 3/4;
background-color: yellow;
}
.main {
grid-column: 2/3;
grid-row: 3/4;
background-color: green;
}
.footer {
grid-column: 1/3;
grid-row: 4/5;
background-color: orange;
}
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="./style.css">
<script src="./code.js"></script>
<title>TEST SITE</title>
</head>
<body class="container">
<header class="header">
<p>Header</p>
</header><!-- header -->
<menu class="menu">
<p>Menu</p>
</menu><!-- menu -->
<aside class="sidebar">
<p>Sidebar</p>
</aside><!-- aside -->
<main class="main">
<p>Body</p>
</main><!-- main -->
<footer class="footer">
<p>Footer</p>
</footer><!-- footer -->
</body><!-- body -->
</html><!-- html -->
Firefox 57.0.4
Opera 50.0.2762.58
使用百分比单位创建网格时,需要适当的维度链才能计算出百分比。在这里,BODY 被用作网格,因此请确保样式中包含以下行:
html, body {
width: 100%; height: 100%;
}
您应该从 body 中删除 class 容器并将其放入 div 中。您的代码应该如下所示。
<div class="container">
<header class="header">
<p>Header</p>
</header><!-- header -->
<menu class="menu">
<p>Menu</p>
</menu><!-- menu -->
<aside class="sidebar">
<p>Sidebar</p>
</aside><!-- aside -->
<main class="main">
<p>Body</p>
</main><!-- main -->
<footer class="footer">
<p>Footer</p>
</footer><!-- footer -->
</div>