旧版Edge(12–15)需同时声明-ms-transform和transform且-ms-在前,并配对-ms-transition与transition,否则旋转及过渡失效;transition-duration不宜低于0.15s,伪元素需单独设置transform并指定display。

Edge旧版不支持transform导致旋转失效
旧版Edge(特别是Edge 12–18)对 transform 的支持不完整,纯用 transform: rotate(45deg) 会直接不生效,连带 transition 也挂掉。这不是写法错,是渲染引擎压根没解析这个声明。
- 必须显式加
-ms-transform前缀,且要放在标准属性之前(CSS层叠规则:后写的覆盖前写的,所以前缀得在上) - 仅加前缀还不够——
-ms-transition也得同步补上,否则旋转过程没有过渡动画 - 注意:Edge 16+ 已开始支持无前缀
transform,但为了兼容 12–15,前缀仍是刚需
正确写法:前缀顺序与过渡属性配对
以下写法能稳定触发旋转+过渡,经 Edge 14/15/17 实测通过:
button {
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-ms-transition: -ms-transform 0.3s ease;
transition: transform 0.3s ease;
}
-
-ms-transform和transform必须同时存在,且-ms-在前 -
-ms-transition只认-ms-transform,不能写成-ms-transition: transform ... - 标准
transition里用transform(不带前缀),和标准transform对应
transition-duration 设太小会导致Edge卡顿
在 Edge 14–15 上,把 transition-duration 设成 0.1s 或更低,动画常会跳帧甚至卡死——不是代码错,是旧版渲染管线对高频重绘处理乏力。
- 建议最低设为
0.15s,实测比0.1s稳定得多 - 如果必须快,优先降
ease曲线复杂度,比如换用linear,比硬压时长更可靠 - 别依赖
will-change: transform来优化——旧版Edge不支持该属性,加了反而可能引发样式重置
伪元素旋转时-ms-transform不继承
给 ::before 或 ::after 单独设旋转,-ms-transform 不会从父元素继承,必须显式声明。
- 错误写法:
.icon { -ms-transform: rotate(90deg); } .icon::before { content: "→"; }→ 伪元素不动 - 正确写法:
.icon::before { -ms-transform: rotate(90deg); transform: rotate(90deg); } - 注意:伪元素的
display默认是inline,而transform对inline元素支持不稳定,建议加display: inline-block或block
旧版Edge的 -ms-transform 行为和现代浏览器差异不小,最易被忽略的是前缀属性和标准属性的配对关系——漏一个、顺序反了、或者 transition 里混用前缀/无前缀,都会让整个效果静默失败。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











