一尘不染

IE9:为什么从CSS设置“ -ms-transform”有效,但不能与jquery.css()一起使用

css

这有效

div{
    -ms-transform: rotate(30deg);
}

并且以下不

$("div").css("-ms-transform","rotate(30deg)");

任何想法为什么,以及如何解决?
相同的东西在所有其他浏览器上都可以正常工作,但在IE上却不行。当然,只有IE9支持它。旧版本不。


阅读 778

收藏
2020-05-16

共1个答案

一尘不染

该属性中的破折号(’-‘)不适用于脚本编写。您应该msTransform改用。

顺便说一句:尽管许多浏览器 确实 从脚本中理解并解析了诸如style [‘background-color’]之类的CSS,但afaik
Firefox却无法。此外,我认为JQuery 在解析.css(...)属性之前会将属性转换'background- color'成与DOM脚本等效的属性('backgroundColor'在这种情况下)。

为了完整起见JQuery.css确实将虚线属性转换为camelCase。这是JQuery.css-internals的字符串表示形式
'-ms-transform'

var fcamelCase = function( all, letter ) {
        return letter.toUpperCase();
    };
var rdashAlpha = /-([a-z])/ig;
// JQuery.css does a replace operation with these variables 
// on the raw property string:
alert('-ms-transform'.replace(rdashAlpha,fcamelCase)); //=> msTransform

这就是为什么$("div").css("-ms- transform","rotate(30deg)")在IE9中不起作用的原因。IE9期望:msTransform

为什么然后$("div").css("-moz-transform", "rotate(-90deg)")在Firefox中运行呢?因为Mozilla显然决定为其-moz-
[properties]使用完整的CamelCase,所以MozTransform脚本样式属性是有效的(顺便说一句,mozTransform实际上不是。)。

那么,一切都交给浏览器了,在数字阳光下没有什么新鲜的了。

2020-05-16