ie9–ie11不支持linear-gradient(),bg-gradient-*类完全失效;需用filter: progid:dximagetransform.microsoft.gradient()回退,并前置background-color兜底。

IE 浏览器(尤其是 IE9–IE11)根本不支持 bg-gradient 类,哪怕你配了 bg-primary 也白搭——因为 Bootstrap 的渐变样式依赖 background-image: linear-gradient(),而 IE9 不支持该函数,IE10–IE11 仅支持带 -ms- 前缀的旧版语法,且需手动声明。
IE 下 bg-gradient 完全不生效的根本原因
Bootstrap 的 bg-gradient-primary 等类,底层是靠 CSS 的 background-image: linear-gradient(135deg, #0d6efd, #86b7fe) 实现的。IE9 完全不识别 linear-gradient();IE10–IE11 虽支持,但只认 filter: progid:DXImageTransform.Microsoft.gradient(...) 或带 -ms- 前缀的写法(实际兼容性极差)。更关键的是:Bootstrap 官方 CSS 文件里压根没为 IE 注入任何 fallback 渐变规则。
- 不是漏写了颜色类,而是 IE 根本解析不了这行 CSS
- 加
!important、补min-height、删background-color都不能解决底层不支持问题 - 即使开了
IE=edge文档模式,linear-gradient()在 IE11 中仍被静默忽略(不报错,也不渲染)
IE9–IE11 中真正可用的渐变写法
必须放弃 Bootstrap 的 bg-gradient-* 类,手写 IE 兼容的 fallback。最稳妥的是双写法:现代浏览器用 background-image,IE 用 filter 回退。
.my-gradient {
/* 现代浏览器 */
background-image: linear-gradient(to right, #0d6efd, #86b7fe);
/* IE10–IE11 fallback(注意:IE9 只支持 filter,且仅限块级元素) */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0d6efd', endColorstr='#86b7fe', GradientType=1);
/* IE9 以下兜底纯色 */
background-color: #0d6efd;
}
-
GradientType=1表示水平渐变(=0是垂直) -
startColorstr和endColorstr必须是#rrggbb格式,不支持 rgba 或命名色 - 该
filter在 IE10+ 中会被background-image覆盖,所以顺序不能颠倒 - IE9 中若元素有
position: relative或z-index,filter可能失效,需额外加zoom: 1
为什么不要用 -ms-linear-gradient
有人尝试写 background-image: -ms-linear-gradient(to right, ...),但这在 IE10–IE11 中基本无效——它只在极早期 IE10 Preview 版本中短暂存在,正式版已移除,且与标准语法冲突。实测中,这条规则常被浏览器直接丢弃,连 fallback 都不触发。
- MDN 明确标注
-ms-linear-gradient已废弃,不推荐使用 - Bootstrap 官方 SCSS 源码里也从未定义过该前缀版本
- 真要兼容,就老实用
filter+background-color组合,别碰线性渐变前缀
文字和边框在 IE 渐变下看不清怎么办
IE 的 filter 渐变渲染质量低,常导致颜色发灰、对比度下降。原生 Bootstrap 的 text-light 或 text-dark 在 IE 下极易失效。
- 强制指定文字色:
color: #fff !important;或color: #212529 !important; - 加实色边框保可读性:
border: 1px solid #0a580a;(别依赖border-gradient,IE 不支持) - 避免透明背景:
background-color: transparent在 IE 中可能渲染为黑色或闪烁,改用浅色纯色兜底
真正卡住的从来不是“怎么写渐变”,而是接受 IE 对渐变的支持本质就是残缺的——它没有平滑过渡、不支持多色停点、不响应缩放。如果你的项目还必须跑在 IE 上,优先考虑用单色 + 微妙阴影(box-shadow 在 IE9+ 可用)替代渐变,比硬撑 filter 更可靠。











