基于浏览器/平台使用javascript添加样式

基于浏览器/平台使用javascript添加样式,javascript,html,css,cross-browser,Javascript,Html,Css,Cross Browser,我想向一个dom元素添加多个css样式,它也可以在不同的浏览器中工作。 那么,在性能方面,以下哪一项是更好的选择 将所有不同的前缀css添加在一起,让浏览器选择哪一个 domElement.style.cssText=“-webkit transform:scaleY(1.25);transform:scaleY(1.25)” 以编程方式基于浏览器或平台添加css 您不应该尝试优化浏览器本身已经完成的工作 只需添加任意多的无效CSS属性即可。浏览器未计算无效的CSS选择器或属性 您正在犯一些错误

我想向一个dom元素添加多个css样式,它也可以在不同的浏览器中工作。 那么,在性能方面,以下哪一项是更好的选择

  • 将所有不同的前缀css添加在一起,让浏览器选择哪一个 domElement.style.cssText=“-webkit transform:scaleY(1.25);transform:scaleY(1.25)”
  • 以编程方式基于浏览器或平台添加css

  • 您不应该尝试优化浏览器本身已经完成的工作

    只需添加任意多的无效CSS属性即可。浏览器未计算无效的CSS选择器或属性

    您正在犯一些错误:

    1.)不要使用内联样式表。关于如何覆盖这样的内联样式,已经有太多问题了。简单的回答是:你不能。较长的答案是:你可以,但不能不打开
    的门!重要提示
    hell

    2.)在明显需要功能检测的情况下进行客户端检测。您的代码不可能识别,较新的Chrome版本已经使用了该属性的无前缀表示法

    如果您完全不需要任何JS就可以做到这一点,那么将更加简单并获得更高的性能:

    .my-element:hover {
        -webkit-transform: scale(0, 1.25);
            -ms-transform: scale(0, 1.25); // IE9 only
                transform: scale(0, 1.25);
    }
    

    在Chrome/Safari决定删除转换的-webkit前缀后,这将被打破。@chrona这将在Chrome36.0中发生——很快就会发生。Nachiketha shu,也请看一下:
    .my-element:hover {
        -webkit-transform: scale(0, 1.25);
            -ms-transform: scale(0, 1.25); // IE9 only
                transform: scale(0, 1.25);
    }