table td实现内发光必须用box-shadow: inset 0 0 blur rgba(),且需满足inset置首、偏移为0、blur在8–20px;同时须设display: block/inline-block和显式background,否则因table-cell盒模型限制易失效。

table td 怎么用 box-shadow 实现内发光
直接给 td 元素加 box-shadow: inset 就行,但必须满足三个硬条件:inset 关键字写在最前、水平/垂直偏移为 0、模糊半径设在 8px–20px 区间。否则光会跑出单元格、偏斜或糊成一团。
为什么 table td 的内发光容易失效
表格单元格默认是 display: table-cell,盒模型行为和普通 div 不同,容易导致 box-shadow: inset 被截断或不渲染:
-
border-collapse: collapse会让相邻单元格边框合并,inset阴影可能被压扁甚至消失 -
td没有显式background时,半透明发光色会被父级table背景吞掉 - 某些浏览器(如旧版 Safari)对
table-cell的inset支持不稳定,偏移哪怕写成0.1px都可能错位
可靠写法:先改 display 再加 inset 阴影
绕过表格原生限制最稳的方式,是把 td 当普通块元素用:
- 给
td加display: block或display: inline-block,再设固定宽高或min-width/min-height - 必须配
background(哪怕是background: transparent),否则rgba()发光色不可见 - 推荐双层叠加增强层次:
box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.8), inset 0 0 14px rgba(255, 255, 255, 0.3) - 如果要保留表格语义结构,可只对特定列或 hover 状态加效果,避免全表重绘卡顿
别踩的坑:outline / border / filter 全都不行
这些方案在 td 上基本无效:
立即学习“前端免费学习笔记(深入)”;
-
outline只能外描边,outline: solid+outline-offset无法模拟“从内部透光”感 -
border是实线,不是光晕;border-image难控制渐变方向,且不支持响应式缩放 -
filter: drop-shadow()对td完全没反应——它只作用于图像或带透明通道的元素,表格单元格不算 -
text-shadow只影响单元格里的文字,不会让整个格子“亮起来”
真正起作用的只有 box-shadow: inset,而且必须搭配显式 display 和 background 才能在表格里稳住。



















