css - 为什么这些网格区域重叠?

标签 css css-grid overlap

footer 区域与导航区域和主要区域重叠(从“main”中包含的部分元素的圆形左下角不可见的事实可以看出)。主区域大小设置为自动,部分元素高度设置为 100%。这是怎么回事?

body {
  margin: 0;
}

.wrapper {
  display: grid;
  height: 100vh;
    grid-template-areas: 
        "header header"
        "nav main"
        "foot foot";
  grid-template-rows: 3rem auto 3rem;
  grid-template-columns: 10rem auto;
  background-color: rgb(10, 2, 29);
}

header {
  grid-area: header;
  padding: 0.5rem;
}

nav {
  grid-area: nav;
  padding: 0.5rem;
}

main {
  grid-area: main;
}

section {
  width: auto;
  height: 100%;
  padding: 0.5rem;
  color: rgb(10, 2, 29);
  background-color: rgb(254, 254, 255);
  border-radius: 0.1rem 0 0 0.1rem;
}

footer {
  grid-area: foot;
  background-color: blue;
  padding: 0.5rem;
}
<div class="wrapper">
  <header>header</header>
  <nav>nav</nav>
  <main>
    <section id="page1">content1</section>
  </main>
  <footer>foot</footer>
</div>
<script src="main.js"></script>

最佳答案

您已在元素上设置了填充。这会增加每个框的大小,因为 box-sizing 属性的默认值为 content。您需要覆盖默认值。

将其添加到您的代码中:

* { box-sizing: border-box }

body {
    margin: 0;
}
.wrapper {
    display: grid;
    height: 100vh;    
    grid-template-areas: 
        "header header"
        "nav main"
        "foot foot";
    grid-template-rows: 3rem auto 3rem;
    grid-template-columns: 10rem auto;
    background-color: rgb(10, 2, 29);
}
header {
    grid-area: header;
    padding: 0.5rem;
}
nav {
    grid-area: nav;
    padding: 0.5rem;
}
main {
    grid-area: main;
}
section {
    width: auto;
    height: 100%;
    padding: 0.5rem;
    color: rgb(10, 2, 29);
    background-color: rgb(254, 254, 255);
    border-radius: 0.1rem 0 0 0.1rem;
    border: 5px dashed red; /* demo */
}
footer {
    grid-area: foot;
    background-color: blue;
    padding: 0.5rem;
}

/* new */
* { box-sizing: border-box; } 
<div class="wrapper">
  <header>header</header>
  <nav>nav</nav>
  <main>
    <section id="page1">content1</section>
  </main>
  <footer>foot</footer>
</div>

有关 this answer 中的 box-sizing 的更多信息.

关于css - 为什么这些网格区域重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57329410/

相关文章:

python - 如何找到与给定范围元组重叠的元组

r - 计数与 R data.table foverlaps() 或 IRanges 的预期重叠

html - 浏览器不应用 css 链接到 svg 这是 img 的来源

html - YouTube视频在HTML下拉菜单上重叠

css - 如何在堆积条形图上的轴标签之间创建更多间隙?

css - 当我在 div 溢出的高度动态添加 svg 时,如何防止它发生?

html - Flex/Grid 布局不适用于按钮或字段集元素

html - 网格元素不对齐

javascript - 处理大型集合时优化 jQuery 选择器/addBack()

jquery - 带有 jQ​​uery Slider Revolution(WP 插件版本)的 Webkit 中的字体渲染/平滑问题