You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS Grid中行内Div鼠标悬停背景变色的实现方法

实现CSS Grid行悬停高亮效果

要实现鼠标悬停时高亮整行所有Div,有两种可行方案,可根据你的需求和浏览器兼容要求选择:

方案一:调整HTML结构(兼容所有浏览器)

先把每行的Div包裹在一个父容器里,让行结构更清晰,再通过CSS选中行容器的hover状态来控制内部Div样式:

HTML代码

<div class="grid-container">
  <!-- 第一行 -->
  <div class="grid-row">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
  </div>
  <!-- 第二行 -->
  <div class="grid-row">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
  </div>
  <!-- 第三行 -->
  <div class="grid-row">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
  </div>
</div>

CSS代码

/* 外层Grid容器 */
.grid-container {
  display: grid;
  gap: 8px; /* 行与行之间的间距 */
}

/* 每行的Grid布局 */
.grid-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列均分宽度 */
  gap: 8px; /* 列与列之间的间距 */
}

/* 悬停行时,高亮该行所有Div */
.grid-row:hover > div {
  background-color: #e6f7ff; /* 自定义高亮背景色 */
}

/* 基础样式 */
.grid-row div {
  padding: 16px;
  border: 1px solid #ddd;
  transition: background-color 0.2s; /* 平滑过渡效果 */
}

方案二:不修改HTML(依赖现代浏览器特性)

如果不想调整现有HTML结构,可以使用CSS :has() 伪类实现,该特性需要Chrome 105+、Firefox 121+或Edge 105+以上版本支持:

HTML代码(保持你的原结构)

<div class="grid-container">
  <!-- row 1 -->
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <!-- row 2 -->
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <!-- row 3 -->
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
</div>

CSS代码

.grid-container {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列布局,对应每行4个Div */
  gap: 8px;
}

/* 第一行:悬停该行任意Div时,选中第一行所有元素 */
.grid-container:has(div:nth-child(-n+4):hover) div:nth-child(-n+4) {
  background-color: #e6f7ff;
}

/* 第二行:悬停该行任意Div时,选中第二行所有元素 */
.grid-container:has(div:nth-child(n+5):nth-child(-n+8):hover) div:nth-child(n+5):nth-child(-n+8) {
  background-color: #e6f7ff;
}

/* 第三行:悬停该行任意Div时,选中第三行所有元素 */
.grid-container:has(div:nth-child(n+9):nth-child(-n+12):hover) div:nth-child(n+9):nth-child(-n+12) {
  background-color: #e6f7ff;
}

/* 基础样式 */
.grid-container div {
  padding: 16px;
  border: 1px solid #ddd;
  transition: background-color 0.2s;
}

若行数更多,可按规律扩展nth-child选择器范围:第N行的起始位置为4*(N-1)+1,结束位置为4*N。


内容的提问来源于stack exchange,提问作者RalphF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:15:26