我正在尝试理解在Grid中执行此类操作的正确方法。因为我不确定我是否做得对。
正如问题所示,主要是关于在没有额外容器的情况下围绕网格项目进行边界处理。但是,如果您在这里,在阅读问题的标题后,您将感谢您的贡献或改进 以任何可能的方式。
Straight forward example of how everything should look after problem is solved
我需要使用以下项目制作单个列网格布局:
那应该以浏览器为中心。
然后这三个项目周围应该有一个边框。
此外,随着更多项目添加到<main>
元素中,布局必须能够在高度中展开。
到目前为止我所做的和尝试过:
html, body {height: 100%;}
<html>
元素设为网格。<body>
元素设为网格。place-self: auto center;
justify-self: center;
<body>
元素制作边框。
html, body {height: 100%;}
html {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr;
}
body {
border: solid 5px black;
width: 50%;
display: grid;
grid-template-rows: 50px auto 50px;
grid-template-columns: 1fr;
place-self: auto center;
justify-self: center;
}
header { background-color: #0000b7;}
main { background-color: blue;}
footer { background-color:lightblue;}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<style>
</style>
</head>
<body>
<header></header>
<main>
</main>
<footer></footer>
</body>
</html>
答案 0 :(得分:0)
你的place-self:center
使得身体最高位置略高于html doc。使用place-self:auto center;
应该可以解决这个问题。
html, body {height: 100%;}
html {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr;
}
body {
border: solid 5px black;
width: 50%;
margin-top:5px;
display: grid;
grid-template-rows: 50px auto 50px;
grid-template-columns: 1fr;
place-self: auto center;
justify-self: center;
}
header { background-color: #0000b7;}
main { background-color: blue;}
footer { background-color:lightblue;}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<style>
</style>
</head>
<body>
<header></header>
<main>
</main>
<footer></footer>
</body>
</html>
答案 1 :(得分:-2)
如果你找不到东西,这是一个快速的黑客攻击:
<header style="border:1fr 1fr 0 1fr"></header>
<main style="border:0 1fr 0 1fr"></main>
<footer style="border:0 1fr 1fr 1fr"></footer>
e.g。移除header
的底部边框,main
的顶部和底部边框以及footer
的顶部边框。并确保它们之间没有余地。这应该创建一个无缝边框。