回答
當涉及到性能,史蒂夫Souders的是的人:
的:
從報告一個無恥報價優化CSS選擇器的關鍵是 專注於最右邊的選擇器, 也被稱爲密鑰選擇器 (重合?)。這裏有更多 昂貴的選擇器:A.class0007 * {}。 雖然此選擇器可能看起來更簡單,但 瀏覽器的價格更高。因爲瀏覽器 從右向左移動,它開始於 檢查所有匹配 鍵選擇器「*」的元素。這意味着 瀏覽器必須嘗試將此 選擇器與 頁面中的所有元素進行匹配。
[大膽重點煤礦]
我也引用「很明顯,CSS選擇器與一個與許多元素相匹配的按鍵選擇器會顯着減慢網頁速度。」有趣的閱讀,謝謝。 – gpilotino 2009-11-11 10:46:14
我更喜歡這句話「基於這些測試,我有以下假設:對於大多數網站來說,優化CSS選擇器可能帶來的性能收益會很小,並且不值得花費。」 – arkanciscan 2015-10-18 04:22:25
@arkanciscan這是idd非常真實。優化CSS選擇器可能是過早優化的最佳案例之一。 – anddoutoi 2015-10-19 07:38:03
由於我使用的是在每一個我的項目完全相同的規則,並沒有產生嚴重的性能比較的問題,我會說:不,不是因爲據我所知。
一種觀點認爲,它不是那麼多*是一個性能問題,這是很好的舊喜歡 - 它有一個IE問題。它影響IE 5,5.5和6以及Macintosh變體。基本上,有一些所謂的HTML明星選擇錯誤,這適用如下:
* html
這應該被理解爲沒有元素匹配,因爲HTML是根,不能是一個子元素。 IE將此解釋爲html。
* * body
再一次,應該匹配到沒有元素,因爲身體不能是孫子元素 - 即使它是HTML的子元素。 IE將此解釋爲* body。
* html body
這應該不匹配任何元素,但IE將此解釋爲html正文。
性能方面通常認爲應用*僅意味着該樣式適用於頁面中的每個元素。我很少發現這本身就是一個問題 - 它將成爲一個問題的意義在於,無論如何你可能在這方面有太多的標記。同樣,它適用於所有內容,這意味着您需要增加代碼來處理不應該擁有該風格的元素。和其他一切一樣,決定什麼是權衡和平衡應該由您決定。
我不會說這是一個錯誤,但在這種情況下的開發人員錯誤 – Jonathan 2015-11-04 12:51:47
對於一些使用*
的屬性可能會產生意想不到的結果。
* { color: blue }
li { color: red }
現在給出<li><i>text</i></li>
,文本將是藍色!
是的,但是當你設置'*'的屬性時,你可能不會想到它*。用'*'和你很少使用的界面元素或元素,這是更真實的。 – Boldewyn 2009-11-11 10:15:54
@ ApoY2K:僅僅因爲它的運作方式應該是這樣,並不意味着它是預期的。當你有一個*選擇器時很容易忘記它。當你記得時,你必須仔細考慮**每次你添加一個新的元素**來檢查你是不是應用你不想要的樣式。 – DisgruntledGoat 2009-11-11 10:40:45
@ApoY2k:當然,如果你是完美的,永遠不會犯錯誤,你永遠不會寫出不符合預期的代碼。否則,認爲該顏色是從父代繼承是合理的,這就是紅色以外的文本是意外的。 – 2009-11-11 10:50:49
- 1. 爲什麼多線程環境被認爲是有害的?
- 2. 'make install'被認爲是有害的嗎?
- 3. 字母O被認爲是有害的?
- 4. 爲什麼我的CSS選擇器被轉換爲大寫IE
- 5. PKG_CHECK_MODULES認爲有害?
- 6. NSCopyObject認爲有害?
- 7. 究竟選擇這個CSS選擇器是什麼?爲什麼我有這種行爲?
- 8. 爲什麼'\\'被認爲是int?
- 9. jQuery選擇器中的變量和字符串連接 - 它被認爲是有害的嗎?
- 10. 使用「break」打破「for」循環被認爲是有害的?
- 11. JQuery CSS選擇器奇怪的行爲,爲什麼?
- 12. 風格認爲有害?
- 13. PHP sprintf認爲有害?
- 14. 這:懸停選擇器沒有被應用 - 爲什麼?
- 15. 爲什麼使用TransactionScope的默認構造函數有害?
- 16. 這是否被認爲是上下文選擇器?
- 17. Mac OSX? Linux呢? X?侏儒? KDE?爲什麼osx被認爲是linux,爲什麼它不被認爲是linux?
- 18. 爲什麼Angular默認不選擇正確的選擇選項?
- 19. 這是什麼樣的CSS選擇器?這是什麼意思?
- 20. 什麼被認爲是C++語句?
- 21. Syntactic Sugar爲什麼有時被認爲是壞事?
- 22. 爲什麼我的首選CSS字體沒有被使用?
- 23. 星號(*)在CSS選擇器中做什麼?
- 24. CSS選擇器優先級 - 爲什麼td高於僞選擇器?
- 25. 爲什麼我的Cocoa選擇器實際上不被調用?
- 26. 爲什麼Chrome會忽略我的CSS選擇器?
- 27. 爲什麼我的CSS ID選擇器不工作?
- 28. 還有什麼被認爲是Android的沉重任務?
- 29. 在MySQL中爲varchar選擇一個大值會有什麼危害嗎?
- 30. 爲什麼這個班級被認爲是最終的?
在你聽到什麼情況下,這是「有害」?以某些方式使用時,根據瀏覽器的不同可能會有不同的表現(例如,考慮'* html {}')。 – Blixt 2009-11-11 09:42:14
我問這也是因爲我看到「標準事實上」的CSS重置方法避免使用它。 – gpilotino 2009-11-11 10:42:43