2014-05-20 38 views
0

我編寫了一個Chrome擴展程序,其中一個功能是可以在您正在瀏覽的頁面上打開一個幫助面板,其中包含使用指南。這個幫助面板通過JS插入到頁面中,它的CSS都是通過$('#selector_for_help_panel').css({etc})創建的。是否媒體=「全部」CSS覆蓋所有內容?

這很好,除了在Reddit上有一些media="all" CSS規則覆蓋了我的JS的內聯CSS。我認爲只有!important覆蓋了內聯CSS。

!important會在這裏工作來抵消他們的CSS? media="all"落在CSS優先級的層次結構中?

回答

1

媒體類型和媒體查詢對級聯沒有影響。正常情況下,您可以採用樣式表排序的所有原則(例如用戶代理,外部樣式和內部樣式表以及它們的加載順序),級聯和繼承,包括使用!important

!important經常被宣傳爲一種打擊內聯樣式的工具,但其基本原因是它提升了它應用於級聯中的任何聲明,這允許內聯樣式之外的任何聲明都可以擊敗內聯樣式(實際上如果這些內聯樣式本身具有!important),它實際上仍然可以被內聯樣式打敗。這意味着樣式表優先級的所有規則以及選擇器特殊性仍然適用,特別是在級聯中的不同級別中有!important聲明時。

另請參閱:Relationship between !important and CSS specificity

+0

這就是我想的!但是,如何/爲什麼它重寫我的內聯CSS?你不是獨角獸嗎? – Aerovistae

+0

@Aerovistae:編輯我的答案。不幸的是,我的獨角獸權力現在已經[本地化到Meta SE](http://meta.stackexchange.com/users/137537/boltclocks-a-unicorn)。 – BoltClock