不能。css transition 不支持直接应用于 或 元素的 background-color,因其默认 display 值(table/table-row)不构成独立渲染盒;应改用 / 或其包裹元素实现过渡。

transition 能不能直接用在 <table> 或 <code><tr> 上?
<p>不能。CSS <code>transition 只对「可动画属性」生效,且元素必须支持该属性的渐变计算。而 <table>、<code><tr> 默认是 <code>display: table / table-row,它们不支持 background-color 的过渡——浏览器会忽略该声明,控制台无报错但动画无效。
哪些元素能真正触发 background-color 过渡?
只有具备「独立渲染盒」且支持 background-color 的块级或行内块级元素才行。最稳妥的做法是把颜色逻辑转移到 <td> 或 <code><th> 上,或者给单元格加一层包裹(如 <code><div>),再对其应用 transition。
<ul><li><code><td> 和 <code><th> 默认是 <code>display: table-cell,支持 background-color 过渡(现代浏览器均兼容)
<tr> 设置 <code>background-color 并期望它过渡——即使样式生效,transition 也不起作用
<td> 单独写 transition,并统一触发(例如通过 class 切换)
<h3>一个可靠且轻量的实现示例</h3>
<p>给单元格设置过渡,并用 class 控制状态变化:</p>
<pre class="brush:php;toolbar:false;">td {
background-color: #f9f9f9;
transition: background-color 0.25s ease;
}
td.highlight {
background-color: #e6f7ff;
}</pre>
<p>JavaScript 触发时只需切换 class:</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML"><img
src="https://img.php.cn/upload/skill/000/000/081/178998486916110.jpg" alt="Doc To HTML" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML" class="overflowclass">Doc To HTML</a>
<p class="overflowclass">使用 MinerU 文档处理引擎将 Word 文档(.doc、.docx)转换为保留结构和格式的干净 HTML。</p>
</div>
<a rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<pre class="brush:php;toolbar:false;">document.querySelector('td').classList.add('highlight');</pre>
<ul>
<li>不要写 <code>transition: all 0.25s —— 它会强制重绘所有可变属性,性能差且不可控border-collapse: collapse),确保 background-color 不被边框遮盖;必要时给 td 加 padding 避免视觉割裂hover 场景下容易忽略的细节
单纯写 td:hover { background-color: ... } 看似可行,但存在两个实际问题:
- 鼠标移入移出频繁时,transition 会排队执行,导致颜色“卡住”或延迟恢复
- 移动端没有 hover,纯 CSS 方案无法覆盖触控场景
- 若需跨行/跨列高亮,不能依赖
:hover,必须用 JS 控制 class 并配合事件委托(比如监听<tbody>) <p>真正稳定的交互,得靠 class + JS 控制,而不是只靠伪类。</p> </tbody>










