[英]How to override user agent stylesheet in Chrome and show my design Correctly
[英]user agent stylesheet override my own styles
編輯***在什么情況下用戶代理樣式可以覆蓋自定義CSS?
我在我的頁面上的元素上設置了一些樣式,似乎用戶代理樣式表覆蓋了我的定義。
它發生在Chrome版本39.0.2171.95 m,Firefox 34.0.5中,但不是在IE 11中。
我知道我對該元素沒有任何直接的樣式,但我的理解是,如果特定元素絕對沒有樣式,則用戶代理樣式表僅接管。 繼承的風格不算數嗎?
一般問題的答案是,在決定哪種樣式設置“獲勝”時,僅考慮元素本身上設置的屬性設置。 舉例來說,如果我們只有一個樣式表,設置font-size: 18px
的對body
元素和設置另一個樣式表font-size: 9px
所有p
元素,則字體大小p
元素是9px,不管是什么樣式表的起源是,例如后者是否只是瀏覽器默認樣式表。 繼承在這里沒有任何作用。 這在CSS 2.1規范的分配屬性值,級聯和繼承一節中有所描述。
只有在上述“斗爭”解決后,才會考慮繼承。 只有這樣的可繼承屬性由那些他們根本沒有設置元素繼承。
具體問題沒有提供具體的代碼,但可以推斷出你有這樣的東西:
<style>
body { font-size: 12px; }
</style>
<table>
<tr><td>foo
</table>
bar
通常這會導致“foo”和“bar”以12px大小顯示。 表格單元繼承的表格行,它繼承其從大小tbody
元件,其繼承了它從該表,它繼承它從body
。
但是,在您的情況下,此鏈斷開。 原因是瀏覽器樣式表有
table { font-size: medium }
實際上往往意味着16px。 現在table
元素具有屬性集,因此單元格繼承該值。
瀏覽器通常在樣式表中沒有這樣的規則。 但是,在Quirks模式下 ,大多數瀏覽器都應用該規則。 這意味着字體大小不會從body
繼承到表中。 這反映了IE的非常舊版本中的錯誤(或奇怪),並且可以像過去那樣呈現舊頁面。
如果您無意中導致Quirks模式並且不需要它用於其他目的,請拍打
<!DOCTYPE html>
在文檔的最開始。 但要注意,舊頁面可能會以不同的方式搞砸,如果它們是在與Quirks模式相對應的測試條件下設計的。
或者,將以下規則添加到樣式表中:
table { font-size: 100% }
這意味着表獲取其父級的字體大小。 (比如繼承,但更安全。)
使用normalize.css來避免這個問題,如果沒有將任何樣式設置為元素,他將繼承用戶代理樣式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.