cssText

作者: MrOldK | 来源:发表于2018-07-24 12:02 被阅读18次
    cssText是什么?

    说白了,就是style的一个属性。
    开发中js设置元素样式的时候,我们经常会这么写ele.style.name=value(后面此种写法只代表js设置单一样式时候的写法),同理,设置cssText的属性值也是这么写ele.style.cssText=value;

    cssText是干啥的

    cssText代表的是样式字符串,跟ele.style.name=value功能一样,都是用来设置元素样式。
    但是,是设置的行内的,还是内联的亦或是外联的呢??在这里证明一下。

    //demo.css中.box的width样式设置为100px
    <link rel="stylesheet" type="text/css" href="demo.css"/>
    
    //style
    <style>
      .box{
          width:200px;
    }
    </style>
    //html
    <html>
        <div class='box' id='box' style='width:300px;height:100px;border:1px solid red;'>
    </html>
    //script
    <script>
        let box = document.getElementById('box');
        console.log(box.style.width)//300px
        console.log(box.style.cssText)//width: 300px; height: 100px; border: 1px solid red;
    </script>
    

    如结果所示,无论是box.style.width或者是box.style.cssText,打印出的都是元素的行内样式,只不过box.style.width打印出的是单一样式属性值,而box.style.cssText打印出的则是多个样式属性和值的字符串。

    ele.style.cssText与ele.style.name的区别

    1 设置元素样式时,写法上的区别

    功能是一样的,只不过ele.style.cssText可以同时设置多个样式属性,而ele.style.name=value只能同时设置一个样式属性。这就注定了在设置元素样式时,写法就有区别。
    ele.style.name=value时的写法:

    ele.style.width=”10px”;
    ele.style.height=”10px”;
    ele.style.border=”1px solid red”;
    

    ele.style.cssText=value时的写法:

    ele.style.cssText=”width:10px;height:10px;border:1px solid red”;
    

    是不是精简了很多?

    2 一定程度上,性能有优势

    为什么说在一定程度上呢?因为js解析引擎在解析两种语句上,在设置样式不多的时候,性能几乎没什么差别,即使到了设置10多个样式的时候,性能差别也可以忽略不计。但是在具体到业务上来说,同效果配合,不断变换样式属性达到效果目的,这时候,就会体现出来cssText的优势了。亲测在高端手机上没有多大差别,在稍微低端点的手机上,ele.style.cssText=value流畅度优于ele.style.name=value
    如上写法上的区别,一种是多行单一设置,一种是单行多种设置。如果需要设置的样式属性有很多,那么代码自然就会很多,而且用js来覆写对象的样式是比较典型的一种销毁原样式并重建的过程,这种销毁和重建,都会增加浏览器的开销,在一定程度上回消耗浏览器性能。

    3 权重高

    同时设置box.width

    WechatIMG1375.jpeg
    会发现,盒子展现的是cssText的值,尽管我们已经把stye.width写在后面,却依然是cssText的样式。如下图:
    WechatIMG1376.jpeg

    不过,在设置cssText值的时候,会有一个问题,每次设置的cssText的值,都会把原来的cssText的值销毁重新赋值,也就是把原来的清除掉。所以可以用累加的形式,ele.style.cssText+=';width:300px;height:200px;border:1px solid red;'避免之前样式串被覆盖掉。

    相关文章

      网友评论

          本文标题:cssText

          本文链接:https://www.haomeiwen.com/subject/okujmftx.html