这是一个用CSS网格布局创建的表格,但我有一个问题,我不能在每行上都保持悬停状态。
我只想用CSS来做这个。
谁能给我一个给予解决方案?
.table {
display: grid;
grid-template-columns: [col-start] auto [col-end];
grid-template-rows: [header-start] 50px [header-end row-start] auto [row-end];
grid-auto-rows: auto;
grid-auto-columns: auto;
grid-gap: 1px;
}
.table>* {
background: gray;
padding: 10px;
}
.heading {
background: navy;
color: #fff;
grid-row: header;
}
个字符
7条答案
按热度按时间c9x0cxw01#
这是我的解决方案,基于兄弟组合子。
主要部分是:
字符串
片段:
的数据
html的结构必须使
.datarow
元素关闭虚拟网格行并跨越所有前面的单元格。为了让单元格和行重叠,需要明确网格内的位置。whlutmcx2#
我最终得到了一个不同的解决方案。我的表看起来像这样:
个字符
现在你想要每行的悬停状态。添加一个元素 Package 每行会破坏父网格,因为它实际上是你试图在网格中布局的那些行 Package 器的子网格。另外,我更喜欢:
<table>
。这大约使所需的行数增加了一倍,并需要更多的样式。nth-child
令人费解。div
中,添加类.row
和display: contents
,然后使用.row:hover > span
作为选择器,您可以添加opacity: 0.6
。最后,我选择了以下我认为更简单的方法:
的字符串
wkyowqbh3#
现在的解决方案是子网格。它解决了主网格中的间隙问题,标记有点类似于
tr
和table
,这意味着你有嵌套:字符串
CSS非常简单,没有太多的技巧。
nkkqxpd94#
第一个月
个字符
omvjsjqw5#
我遇到了这个问题。首先,我很好奇为什么如果你使用显示网格,为什么你不使用grid-item类?这是不必要的吗?我认为是的。无论如何,答案是,你需要给所有的div元素给予grid-item类,并将位置设置为相对。
字符串
5w9g7ksd6#
由于您将其视为一个表,其中元素位于同一行,因此还可以将每行 Package 在DIV中,并将“display”设置为“contents”。这将形成一个用于悬停的无害父元素,然后为子元素设置样式。(不过,Edge中尚不支持display:contents。)
个字符
tcbh2hod7#
这里有一个使用伪元素的技巧。这个想法是使用元素作为背景,并使其在左侧和右侧溢出,以便它将覆盖所有行。就像这样,如果您将鼠标悬停在行内的任何元素上,您会更改颜色,就像您更改了整行的颜色一样。
这个技巧涉及到标记上的一些变化和更多的CSS。
个字符