html - 为什么我在 CSS Grid 中得到的是列而不是行?

标签 html css css-grid

我有一个 html 页面,其中 1 行用于导航,1 行用于正文。我使用 css-grid 指定了两行。我已经命名了不同的网格区域

.grid-container {
  display: grid;
  grid-template-rows: [nav-row-start]40px [nav-row-end] [body-row-start] auto [body-row-end];
}

.my-border {
  border: 1px solid black;
}

.my-nav-height {
  height: 40px;
}

div {
  height: 100vh;
}

#nav {
  grid-row: nav-row-start/nav-row-end;
}

#body {
  grid-row: body-row-start/body-row-end;
}
<div class="grid-container">
  <div id="nav" class="my-border my-nav-height">nav bar</div>
  <div id="body" class="my-border my-body-height">body</div>
</div>

我看到了这个(2 列而不是两行)

enter image description here

但是如果我为装订线添加 0px 维度,那么我会看到两行

enter image description here

装订线尺寸是强制性的吗?

最佳答案

这是一个简单的语法错误。

你不能放置两个 author-defined identifiers连续地。它们需要结合起来。

这是错误的:

grid-template-rows: [nav-row-start] 40px [nav-row-end] [body-row-start] auto [body-row-end]

这是对的:

grid-template-rows: [nav-row-start] 40px [nav-row-end body-row-start] auto [body-row-end]

.grid-container {
  display: grid;
  grid-template-rows: [nav-row-start] 40px [nav-row-end body-row-start] auto [body-row-end];
}

.my-border {
  border: 1px solid black;
}

.my-nav-height {}

div {
  height: 100vh;
}

#nav {
  grid-row: nav-row-start/nav-row-end;
}

#body {
  grid-row: body-row-start/body-row-end;
}
<div class="grid-container">
  <div id="nav" class="my-border my-nav-height">nav bar</div>
  <div id="body" class="my-border my-body-height">body</div>
</div>

(使用 grid-gap 属性,我无法重现您遇到的装订线问题。)

关于html - 为什么我在 CSS Grid 中得到的是列而不是行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59590474/

相关文章:

javascript - 有没有一种方法可以使用 classList 在一条指令中添加/删除多个类?

html - 销毁 session 以注销,但用户仍然登录,直到页面刷新

javascript - 无法使用 Facebook 护照成功重定向

angular - flex 容器中的响应列

css 网格可变列宽和换行

html - Bootstrap 跨度定制

css - 响应式 CSS 样式即时内联

Javascript 将位置属性更改为固定位置属性的每个样式的静态

css - 自动填充和调整给定容器中的卡片

javascript - 有没有办法使用 javascript 检测元素在哪个 CSS 网格列和行中?