在主类中,有grid-template-rows: 1fr 1fr
会将整个部分分成两半(sidebar
和content
类嵌套在该main
类元素中)。但是,达到900像素后,它会留一个空白空间,并停留在该部分的顶部,而另一半留空。
我希望主体部分在达到某个断点后填满剩余空间,并且被卡住了。
这是一个很大的职位,这可能使我获得了第一次实习机会,所以如果有人帮助我找到解决方案,我将不胜感激!
body {
margin: 0;
padding: 0;
min-height: 100vh;
box-sizing: border-box;
}
.header,
.footer {
height: 100px;
background-color: #1A1C22;
}
.sidebar {
background-color: #6C757D;
}
.content__box {
background-color: #343A40;
}
.content {
display: grid;
grid-gap: 15px;
}
.main {
min-height: 400px;
height: calc(100vh - 200px);
display: grid;
grid-template-rows: 1fr 1fr;
grid-gap: 15px;
padding: 15px 0;
}
@media (min-width: 600px) {
.content {
grid-template-columns: 1fr 1fr;
}
}
@media (min-width: 900px) {
main {
grid-template-columns: 400px 1fr;
}
}
@media (min-width: 1200px) {
.content {
grid-template-columns: 1fr 1fr 1fr;
}
}
<!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">
<link rel="stylesheet" href="/css/1.css">
<title>Layout & RWD</title>
</head>
<body>
<header class="header"></header>
<main class="main">
<section class="sidebar"></section>
<section class="content">
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
</section>
</main>
<footer class="footer"></footer>
</body>
</html>
答案 0 :(得分:1)
在900px以上,除了grid-template-rows: 1fr 1fr
导致的两行外,您还有两列。您可以通过添加定位到900px以上的grid-template-rows: auto
来将其重置为单个列-请参见下面的演示
body {
margin: 0;
padding: 0;
min-height: 100vh;
box-sizing: border-box;
}
.header,
.footer {
height: 100px;
background-color: #1A1C22;
}
.sidebar {
background-color: #6C757D;
}
.content__box {
background-color: #343A40;
}
.content {
display: grid;
grid-gap: 15px;
}
.main {
min-height: 400px;
height: calc(100vh - 200px);
display: grid;
grid-template-rows: 1fr 1fr;
grid-gap: 15px;
padding: 15px 0;
}
@media (min-width: 600px) {
.content {
grid-template-columns: 1fr 1fr;
}
}
@media (min-width: 900px) {
.main { /* changed from 'main' to '.main' for specificity reasons */
grid-template-rows: auto; /* added */
grid-template-columns: 400px 1fr;
}
}
@media (min-width: 1200px) {
.content {
grid-template-columns: 1fr 1fr 1fr;
}
}
<header class="header"></header>
<main class="main">
<section class="sidebar"></section>
<section class="content">
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
<article class="content__box"></article>
</section>
</main>
<footer class="footer"></footer>