html - 如何定位 CSS 网格布局中的特定列或行?

标签 html css css-selectors css-grid

是否可以使用 CSS 选择特定的网格列或行?

例如,假设我有一个 3 行 2 列的 CSS 网格布局:grid-template-rows: 1fr 1fr 1fr;网格模板列:1fr 1fr;。我如何从第二列中选择所有元素?例如:grid:nth-child(column:2)(只是我的想法,不是有效代码)。

我已经在 div 元素上尝试了 nth-child 选择器,但这不允许我在 CSS 网格自动放置元素时指定行或列布局引擎。

body {
  display: grid;
  grid-template-rows: 1fr 1fr 1fr;
  grid-template-columns: 1fr 1fr;
  grid-gap: 10px;
}

.item {
  background: #999;
}
<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>

<div class="item">
  <p>Right Justify</p>
  <p>Element 1 | Element 2</p>
</div>

<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>

<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>
<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>
<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>
<div class="item">
  <p>Customer Name</p>
  <p>Element 1 | Element 2</p>
</div>

最佳答案

要设置任意行的样式,您可以使用包装器元素,并将其 display 设置为 contents。请参阅下面的代码片段:

.grid-container {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-gap: 2px;
}

.grid-item {
  border: 1px solid black;
  padding: 5px;
}

.grid-row-wrapper {
  display: contents;
}

.grid-row-wrapper > .grid-item {
  background: skyblue;
}
<div class="grid-container">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>
  <div class="grid-item">4</div>
  <div class="grid-item">5</div>
  <div class="grid-row-wrapper">
    <div class="grid-item">6</div>
    <div class="grid-item">7</div>
    <div class="grid-item">8</div>
    <div class="grid-item">9</div>
    <div class="grid-item">10</div>
  </div>
  <div class="grid-item">11</div>
  <div class="grid-item">12</div>
  <div class="grid-item">13</div>
  <div class="grid-item">14</div>
  <div class="grid-item">15</div>
  <div class="grid-item">16</div>
  <div class="grid-item">17</div>
  <div class="grid-item">18</div>
  <div class="grid-item">19</div>
  <div class="grid-item">20</div>
</div>

与所有实现一样,您应该检查以确保它在您的目标环境中工作。您可以在 MDN 上查看兼容性表或 Can I use 支持 display: contents:

关于html - 如何定位 CSS 网格布局中的特定列或行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060803/

相关文章:

javascript - 如何获取 ID 包含特定文本的元素? (原型(prototype))

html - 如何根据字体大小在 HTML 中设置输入标签的高度

html - 使用 calc() 的 Div 间距偏移

javascript - 如何使主DIV内的两个DIV固定且可滚动

html - 带有图标的整个 div 应该是可点击的

CSS 第一个没有类的元素

css - 为所有元素设置字体系列

php - 无法访问获取 dBase 数据。登录页面不断循环回到同一页面

html - 如何垂直对齐图像和文本跨客户端电子邮件模板

css - 使用媒体查询修改 body 和 html 标签的字体大小