如何让 2 个部分在网格中用 header/main/footer 填充整页
How have 2 sections fill full page with header / main / footer in grid
大家好,
我需要帮助,我希望在我的 <main>
中有 2 个部分,我希望第一部分填满整个页面,如果我滚动,我希望第二部分再次填满整个页面。所以我测试了这个:
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
}
main {
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: 100%;
}
.two {
background: cyan;
height: 100%;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
如您所见,我的页脚位于第一部分的底部,但我希望他位于第二部分的真正底部。
如果可能的话,我想修复我的 header 但如果我将 position : fixed;
放在 header {}
中,我的 header 会被隐藏 ??
抱歉我的英语不好。
你能帮帮我吗,祝你有个愉快的一天!
*{
margin:0;
padding:0;
}
header {
position: fixed;
height: 20vh;
width: 100vw;
z-index: 1;
background-color: black;
}
section {
display: block;
background: #CFF;
}
.one {
top:20vh;
background: red;
height: 100vh;
}
.two {
background: cyan;
height: 100vh;
}
footer{
height: 20vh;
background-color: blue;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header>434343</header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
您可以使用属性高度:100vh;设置任何 div 视口高度的高度。 100vh 用于固定元素的高度或 div 屏幕或视口的高度。我也解决了你的“位置:固定”问题。现在您可以滚动,您的 header 将可见。您可以像我固定的那样固定 header 的宽度和高度来实现此目的。
在这种情况下,您可以轻松地将 percentage
部分更改为 vh
部分 one
和部分 two
类 中的单位。而已 !在这里您可以阅读更多关于 units 的信息。在 header
选择器上设置 position: sticky
和 top: 0
,使您的导航按照您的意愿工作;)
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
position: sticky;
top: 0;
}
main {
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: 100vh;
}
.two {
background: cyan;
height: 100vh;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
- 首先删除所有
height: 100%
,在任何情况下它们都不会与您的声明一起工作。
- 这里不需要网格。
- 只需添加:
.one { height: calc(100vh - 100px);
- 添加
.two { height: calc(100vs - 200px);
以减去页脚和 header 高度。
- 添加:
header { position: sticky; }
。默认情况下,这不会将 header 移出流程。它会坚持到顶部。
因为您的页脚和 header 都有固定的 100 像素高度,您可以使用 calc 函数来调整这两个部分的大小。
html, body {
margin: 0;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
position: sticky;
top: 0;
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: calc(100vh - 100px);
}
.two {
background: cyan;
height: calc(100vh - 200px);
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
大家好,
我需要帮助,我希望在我的 <main>
中有 2 个部分,我希望第一部分填满整个页面,如果我滚动,我希望第二部分再次填满整个页面。所以我测试了这个:
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
}
main {
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: 100%;
}
.two {
background: cyan;
height: 100%;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
如您所见,我的页脚位于第一部分的底部,但我希望他位于第二部分的真正底部。
如果可能的话,我想修复我的 header 但如果我将 position : fixed;
放在 header {}
中,我的 header 会被隐藏 ??
抱歉我的英语不好。
你能帮帮我吗,祝你有个愉快的一天!
*{
margin:0;
padding:0;
}
header {
position: fixed;
height: 20vh;
width: 100vw;
z-index: 1;
background-color: black;
}
section {
display: block;
background: #CFF;
}
.one {
top:20vh;
background: red;
height: 100vh;
}
.two {
background: cyan;
height: 100vh;
}
footer{
height: 20vh;
background-color: blue;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header>434343</header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
您可以使用属性高度:100vh;设置任何 div 视口高度的高度。 100vh 用于固定元素的高度或 div 屏幕或视口的高度。我也解决了你的“位置:固定”问题。现在您可以滚动,您的 header 将可见。您可以像我固定的那样固定 header 的宽度和高度来实现此目的。
在这种情况下,您可以轻松地将 percentage
部分更改为 vh
部分 one
和部分 two
类 中的单位。而已 !在这里您可以阅读更多关于 units 的信息。在 header
选择器上设置 position: sticky
和 top: 0
,使您的导航按照您的意愿工作;)
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
position: sticky;
top: 0;
}
main {
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: 100vh;
}
.two {
background: cyan;
height: 100vh;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>
- 首先删除所有
height: 100%
,在任何情况下它们都不会与您的声明一起工作。 - 这里不需要网格。
- 只需添加:
.one { height: calc(100vh - 100px);
- 添加
.two { height: calc(100vs - 200px);
以减去页脚和 header 高度。 - 添加:
header { position: sticky; }
。默认情况下,这不会将 header 移出流程。它会坚持到顶部。
因为您的页脚和 header 都有固定的 100 像素高度,您可以使用 calc 函数来调整这两个部分的大小。
html, body {
margin: 0;
}
header,
footer {
height: 100px;
background-color: rgba(0,0,0,0.7);
}
header {
position: sticky;
top: 0;
}
section {
display: block;
background: #CFF;
}
.one {
background: red;
height: calc(100vh - 100px);
}
.two {
background: cyan;
height: calc(100vh - 200px);
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div class="container">
<header></header>
<main>
<section class="one"></section>
<section class="two"></section>
</main>
<footer></footer>
</div>
</body>
</html>