2
假設你有這樣的HTML:CSS3屬性選擇器的效率如何?
<div class='foo-element-1'></div>
<div class='foo-element-2'></div>
...
<div class='foo-element-500'></div>
CSS:
[class^='foo-'] { font-size: 12px; }
.foo-element-1 { color: red; }
.foo-element-2 { color: blue; }
...
.foo-element-500 { color: green; }
每.foo-element-###
有一個共同的風格[class^='foo-']
另一種方式來寫,這可能是:
HTML:
<div class='foo foo-element-1'></div>
<div class='foo foo-element-2'></div>
...
<div class='foo foo-element-500'></div>
CSS:
.foo { font-size: 12px; }
.foo-element-1 { color: red; }
.foo-element-2 { color: blue; }
...
.foo-element-500 { color: green; }
沒有別的用途.foo
。所有.foo-element-###
將在此選項中附加.foo
。假設瀏覽器兼容性是一個非因素,並且有幾百個這樣的元素都有一個共同的風格。
在性能或語義方面使用一種風格是否存在原因?
您是否有任何證據證明JS使用用於CSS選擇元素的引擎? – cimmanon
在具有['document.querySelectorAll'](https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll)的現代瀏覽器中,它們利用查找元素的本地瀏覽器代碼。有理由認爲,查找元素的性能與JS和CSS類似。儘管如此,不,我沒有證明這方面的證據。 –
這裏是一個jsperf,其中的差異可以忽略不計:http://jsperf.com/attribute-versus-class-selector。我不認爲使用document.querySelectorAll是測試CSS渲染的好方法。您需要實際測試渲染時間(請參閱:http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/,儘管測試套件中缺少屬性選擇器)。 – cimmanon