鍍金池/ 問答/HTML/ 屬性聲明樣式與類名聲明樣式是否存在明顯的性能差異?

屬性聲明樣式與類名聲明樣式是否存在明顯的性能差異?

為什么說聲明樣式推薦使用class不推薦用[style]這種方式,一個常見的說法是說選擇[style]的渲染性能沒有.class好,這里我做了瀏覽器的渲染速度測試。

css

      .one {
        width: 100px;
        height: 50px;
        box-shadow: 1px 1px 1px 1px;
        margin: 50px;
      }

      .two {
        background: lavenderblush;
      }

      .three {
        color: lightblue;
        font-size: 15px;
      }
      [one] {
        width: 100px;
        height: 50px;
        box-shadow: 1px 1px 1px 1px;
        margin: 50px;
      }

      [two] {
        background: lavenderblush;
      }

      [three] {
        color: lightblue;
        font-size: 15px;
      }

.class

      let box = document.getElementById('box');
      let tpl = '';
      for (let i = 0; i < 5000; i++) {
        tpl += `<div class="one">div<p class="two">p</p><span class="three">span</span><i></i><em></em></div>`;
      }
      box.innerHTML = tpl;

[style]

      let box = document.getElementById('box');
      let tpl = '';
      for (let i = 0; i < 5000; i++) {
        tpl += `<div one>div<p two>p</p><span three>span</span><i></i><em></em></div>`;
      }
      box.innerHTML = tpl;

通過chrome的performance觀察發(fā)現(xiàn)Rendering的速度是差不多的。
那么在實踐中是什么樣的呢?是否真的存在明顯的性能差異?
是否有相關(guān)文檔可以查閱呢?

回答
編輯回答
痞性

請看這篇2014年的英文文章。測試的結(jié)論是:

sweating over the selectors used in modern browsers is futile; most selection methods are now so fast it’s really not worth spending much time over.

翻譯成中文就是:

在現(xiàn)代瀏覽器中糾結(jié)于使用哪種選擇器毫無意義;絕大多數(shù)的選擇方式都非常之快,根本不值得花費(fèi)大量時間研究。
2017年6月29日 05:57
編輯回答
墨小白

謝邀!
我對此問題沒有深入研究。個人認(rèn)為屬性選擇器和類選擇器各有優(yōu)缺點(diǎn),在適當(dāng)?shù)臅r候使用適當(dāng)?shù)倪x擇器即可。
類選擇器在于可控,在需要的地方加上類名,不需要考慮是什么標(biāo)簽。
屬性選擇器在于全面,不需要手動添加類名。比如用屬性選擇器給所有的圖片設(shè)置最大寬度為100%。如果用類名,你必須要預(yù)先設(shè)置類名。

2017年6月9日 13:26