ie8及以下完全不解析text-shadow,必须用filter: progid:dximagetransform.microsoft.shadow模拟,需触发haslayout、仅支持十六进制色与角度方向,且不能与现代属性混写。

IE8 及以下版本对 text-shadow 完全无解析能力,不是效果差,是整条 CSS 声明被忽略——连报错都不会有。真要兼容,必须放弃 text-shadow 本身,换一套 IE 私有机制或静态替代方案。
IE6–IE8 只能用 filter: progid:DXImageTransform.Microsoft.Shadow
这是唯一能在 IE5.5–8 中模拟文字阴影的合法方式,但限制极多:
-
filter必须写在有 layout 的元素上(加zoom: 1或position: relative) - 方向
Direction是角度值:135 表示左下,0 表示正右,不支持负角度 -
Strength不是模糊半径,而是“硬边延伸长度”,设成2到4比较安全,超过6锯齿明显 -
Color只接受十六进制(如#333)或命名色(如gray),rgba()会退化为纯黑 - 不能和现代属性混写,比如同时写
text-shadow和filter,旧 IE 会直接跳过整条规则
filter: drop-shadow() 在 IE9+ 也靠不住
它看似是 text-shadow 的现代替代,但实际作用对象是整个元素的 alpha 通道,不是文字本身:
- 背景透明、字体镂空(如启用
font-feature-settings: "cv01")、或用了background-clip: text时,阴影会漏出或消失 - 参数顺序不同:
drop-shadow(x y blur color),没有spread,且不支持多层 - 在 IE9–10 中,
filter: drop-shadow()根本不被识别,会被静默丢弃
真正可用的降级路径只有两条
一条是彻底放弃动态阴影,改用 PNG 贴图文字;另一条是 JS 运行时检测后插入替代样式:
- PNG 方案需额外处理可访问性:给
<img>加alt,并用aria-hidden="true"隐藏冗余文字 - 若用 JS 检测,必须用
CSS.supports('text-shadow'),但 IE11 不支持该 API,得先判断是否存在,不存在就直接走 fallback - PostCSS 插件(如
postcss-text-shadow-fallback)可在构建时自动报 warning,但它不生成降级代码,只提醒你手动处理
最常被忽略的一点:哪怕写了 filter,如果父容器设置了 overflow: hidden 或 clip-path,IE 的 Shadow 滤镜也会被裁掉——这和现代浏览器里 text-shadow 被裁的原理一样,但更难排查。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











