是否可以使用CSS选择特定的网格列或行?
例如,假设我有一个3行2列的CSS网格布局:grid-template-rows: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr;
。如何选择第2列中的所有元素?例如:grid:nth-child(column:2)
(只是我的想法,不是有效的代码)。
我已经在div
元素上尝试了nth-child
选择器,但是当网格布局引擎自动放置项时,这不允许我指定行或列。
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>
6条答案
按热度按时间moiiocjp1#
要设置任意行的样式,可以使用将
display
设置为contents
的 Package 器元素。请参阅下面的代码片段:**编辑:**与所有实现一样,您应该检查以确保它在您的目标环境中工作。您可以查看MDN或www.example.com上的兼容性表caniuse.com,了解对
display: contents
的支持:8wigbo562#
没有列或行元素可以作为目标,但如果网格是统一的(每行中的单元格数量相同),则可以选择单元格。以下是一些示例。
1.色谱柱
5列网格中的最后一列:
5列网格中的第四列(倒数第二列):
五列网格中的第一列(倒数第五列):
2.行
五列网格中的第一行(前五个单元格):
5列网格中的第二行(单元格6到10):
5列网格中的第三行(单元格11到15):
具有20个单元格的5列网格中的最后一行(从16开始的单元格):
72qzrwbm3#
不适用于CSS。
CSS的目标是HTML元素、属性和属性值。
网格列和行没有这些“挂钩”。
你必须直接瞄准网格项目。
例如,假设我有一个3行2列的CSS网格布局:
grid-template-rows: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr;
.如何选择第2列中的所有元素?zsohkypk4#
不能,因为没有这样的选择器。
但这很奇怪,因为您可以很容易地从CSS定位行/列:
因此,很自然地会出现这样的情况:
我不知道为什么还没有提出这方面的草案。
更新1
CSSWG起草了色谱柱选择草案
更新2
在W3C存储库中也有一个问题请求
roqulrg35#
如果你想给一行设置样式,同样的原则也适用。以上面的例子为例:
vbopmzt16#
在不久的将来,我们将能够做到这一点感谢网格结构选择器
二维网格中单元格的双重关联(与其行和列)不能用层次标记语言中的父代表示。只能以层次方式表示其中一种关联:另一种必须在文档语言语义中显式或隐式定义,在HTML和DocBook这两种最常见的层次化标记语言中,标记是以行为主的(即,行关联是以层次化方式表示的);列必须是隐式的。若要能够表示此类隐式的基于列的关系,请使用列组合符和:定义了
nth-col()
和:nth-last-col()
伪类。在列主格式中,这些伪类将根据行关联进行匹配。这里需要的是
:nth-col()
,其行为方式与:nth-child()
相同:nth-col(An+B)
伪类表示法表示属于列的单元格元素,该列在其ref之前具有An+B-1
列