如何在 CSS Grid 中突出显示行中的所有单元格(显示:网格)

Posted

技术标签:

【中文标题】如何在 CSS Grid 中突出显示行中的所有单元格(显示:网格)【英文标题】:How to highlight all cells in row on mouse over in CSS Grid (display:grid) 【发布时间】:2021-12-28 07:45:15 【问题描述】:

我有一个 CSS 网格:

.grid 
    display: grid;
    grid-template-columns: 10em 10em;
    grid-template-columns: 10em 10em;
    overflow: auto;
    width: 19em;
    height: 8em;

.grid-cell 
   border: solid 1px;
   height: 3em;
<div class="grid">
  <div class="grid-cell" data-row-index="0">A1</div>
  <div class="grid-cell" data-row-index="0">A2</div>

  <div class="grid-cell" data-row-index="1">B1</div>
  <div class="grid-cell" data-row-index="1">B2</div>

  <div class="grid-cell" data-row-index="2">C1</div>
  <div class="grid-cell" data-row-index="2">C2</div>
</div>

是否可以在不动态修改单元格元素属性的情况下突出显示悬停行的所有单元格?

【问题讨论】:

相关:***.com/a/48109479/8620333 @TemaniAfif:伪元素的有趣技巧,但它破坏了我需要的水平滚动 这能回答你的问题吗? How to make hover state on row table with CSS grid layout 不完全。接受的解决方案不适用于滚动条。我不能将.row-wrapperdisplay: contents 一起使用,因为它不受官方支持并且会破坏其他一些东西。 为什么不用表格来代替? 【参考方案1】:

这是一个使用表格而不是网格的解决方案。

.grid 
  width: 19em;
  height: 8em;
  overflow: auto;

table 
  border-collapse: collapse;
  width: 20em;

tr:hover 
  background-color: yellow;

td 
  border: solid 1px;
  height: 3em;
<div class="grid">
  <table>
    <tr>
      <td>A1</td>
      <td>A2</td>
    </tr>
    <tr>
      <td>B1</td>
      <td>B2</td>
    </tr>
    <tr>
      <td>C1</td>
      <td>C2</td>
    </tr>
  </table>
<div>

【讨论】:

谢谢,但问题是如何突出显示 CSS 网格中的行,而不是 html 表格。

以上是关于如何在 CSS Grid 中突出显示行中的所有单元格(显示:网格)的主要内容,如果未能解决你的问题,请参考以下文章

在 CSS 中突出显示悬停时跳过所有其他单元格

突出显示 HTML 表格中悬停行中没有行跨度的单元格

如何比较ag-grid中的行

在 datagridview 中禁用单元格突出显示

如何避免以特定符号开头的行中字符串的文本突出显示[java]

如何突出显示和检测 CSS 网格行上的鼠标点击?