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

Firefox 89.0版本下多个position: sticky元素无故消失如何解决

问题根因

该问题是Firefox 89及相近版本的原生浏览器Bug,和CSS、JavaScript配置无关。根因是Firefox对table下sticky定位的行元素的重绘逻辑存在缺陷,快速移动鼠标触发元素重绘时,浏览器错误计算了sticky元素的可视区域,导致元素被标记为不可见从而停止渲染,该问题在后续Firefox 95及以上版本已经被官方修复。

兼容解决方案(均支持原生table布局、多列场景)

方案1:低改造成本适配(无需修改HTML结构)

给所有设置了position: sticky的tr元素添加GPU加速触发属性,强制浏览器用独立合成层渲染元素,避开重绘缺陷:

tr[style*="position: sticky"] {
  transform: translateZ(0);
  backface-visibility: hidden;
}

该属性不会改变元素原有布局和sticky定位逻辑,无额外副作用,适合原有代码已经大量给tr设置sticky属性的场景。

方案2:高兼容性适配

Firefox对table单元格的sticky支持稳定性高于行级元素,可将sticky属性从tr转移到该行内部所有th/td元素上,示例代码如下:

<table>
  <tr>
    <td style="position: sticky; top: 0px; height: 30px;">列1内容</td>
    <td style="position: sticky; top: 0px; height: 30px;">列2内容</td>
    <!-- 其余列同理 -->
  </tr>
  <tr>
    <td style="position: sticky; top: 30px; height: 30px;">列1内容</td>
    <td style="position: sticky; top: 30px; height: 30px;">列2内容</td>
    <!-- 其余列同理 -->
  </tr>
  <!-- 其余sticky行同理 -->
</table>

该方案兼容所有支持sticky属性的Firefox版本,适合新开发的表格场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 09:45:05