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

Angular Material添加sticky列后行hover的box-shadow如何正常显示

Angular Material 固定(sticky)列悬停阴影异常修复

问题成因

Angular Material 的sticky固定列单元格默认自带position: sticky属性,会生成独立堆叠上下文,默认层级高于普通流元素。之前为了给行加box-shadow给.mat-row设置了position: relative,但行元素未配置更高z-index,导致行的阴影被堆叠层级更高的sticky单元格覆盖,固定列区域看不到阴影。

修复步骤

  1. 移除原有.mat-row:hover样式里的position: relative和行级box-shadow配置,避免打乱原生固定列的堆叠逻辑
  2. 将阴影效果下沉到单元格层面配置,保证sticky单元格自身能渲染阴影
  3. 调整hover状态下sticky单元格的z-index,避免阴影被相邻列遮挡

最终可用样式代码:

/* 行基础悬停样式 */
.mat-row:hover {
    background: #d00e0eec;
    height: 2.125rem;
}

/* 所有单元格统一加底部阴影,覆盖普通列和sticky列 */
.mat-row:hover .mat-cell {
    box-shadow: 0px 3px 2px rgba(0, 0, 0, 0.10);
}

/* 修正sticky单元格hover时的堆叠层级 */
.mat-row:hover .mat-cell.mat-sticky-cell {
    z-index: 2;
}

如果是左侧固定列,固定列和普通列衔接处有视觉断层,可以给最右侧的固定单元格补充一个微弱的右侧内阴影做过渡:

/* 可选:左固定列最后一列补衔接阴影,按需替换为自己的列类名 */
.mat-row:hover .mat-column-projectName.mat-sticky-cell {
    box-shadow: 3px 0 5px rgba(0,0,0,0.06), 0px 3px 2px rgba(0, 0, 0, 0.10);
}

注意:不要随意修改.mat-row的position属性,Angular Material表格的sticky列、行交互都依赖默认的堆叠上下文规则,修改行定位属性很容易引发固定列错位、层级覆盖异常等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:06:22