2013-08-27 407 views
5

我正在處理的頁面上有許多不同的CSS文件,boostrap.css,master.css和custom.css文件。如何取消CSS屬性?

我想要刪除一個屬性,因爲我不想在菜單中的鏈接上有一個:hover屬性。主CSS文件中有

#topSurround a:hover { 
    color: #ffffff; 
} 

的引導CSS文件有

.nav > li > a:hover { 
    text-decoration: none; 
    background-color: #eee; 
} 

我不想編輯這些文件,因爲它們與我使用,並且可以更新模板的核心文件,所以我正在使用一個自定義的CSS文件。通常,我會將該屬性設置爲默認值以覆蓋該屬性的任何以前的用途。

#topSurround a:hover { 
    color: none; (doesn't work, as this isn't the correct default) 
} 

所以,兩個問題:什麼是顏色屬性的默認值(似乎不是一個)?有沒有更簡單的方法去解決這個問題,而不必覆蓋核心文件?

+8

第一個使用'!important'的人建議使用自動降級功能;) – j08691

+0

@ j08691想着同樣的事情! – Dom

+0

在W3C規範中沒有指定的顏色,你可以臨時刪除_background-color:#eee; _並檢查分配了哪種顏色,並將其用作「默認」顏色。 –

回答

15

您可以使用color: inherit使顏色使用其祖先的值。 color很奇怪,因爲它根據上下文具有不同的默認值。例如,鏈接通常默認爲藍色,而文本默認爲黑色。

如果您需要覆蓋現有樣式,請勿使用更具體的選擇器。提高specificity意味着在下次要覆蓋它時只需使用更多選擇器。

相反,利用級聯的使用具有相同的特異性選擇,使覆蓋發生後原有的風格:

/* older style in some library */ 
.foo .bar .baz { 
    color: blue; 
} 

...in an overriding CSS file... 

.foo .bar .baz { 
    color: green; 
} 
+0

我去了這個......我添加到我的自定義樣式表,它覆蓋了導致尷尬的懸停背景的boostrap.css文件。顏色:繼承;訣竅。謝謝您的幫助! – ClaytonDaniels

4

,最好的辦法就是讓更具體 CSS規則,如:

body #topSurround a:hover { 
    color: transparent; 
} 

特異性是重要的CSS的概念,因爲在這篇文章中描述:

http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

+2

很好的答案!也非常感謝你使用'!important': - D – Dom

+3

!重要的是作爲承認失敗,99%的時間。 –

+0

真的很好的答案。 !重要的是爲懶惰的人 – eshellborn

1

每一個CSS樣式具有天然的默認值。這並不總是none

有些可能是0(如零)。可以是auto

有時inherit是最好的選擇。

顏色可以設置爲transparent

如果你不確定默認的是什麼,嘗試只是一個普通的無樣式的元素創建一個虛擬頁面,並使用瀏覽器開發者工具,看看有什麼樣式設置。

4

我建議你嘗試:

#topSurround a:hover { 
    color: inherit; 
} 

至於如何改寫什麼引導是增加的,我想你是如何做的是最好的。

0

要取消屬性,您可以使用unset關鍵字。

所以,在你自定義的CSS文件,你可以這樣做以下: -

#topSurround a:hover { 
    color: unset; 
} 

按照MDN的Web文檔: -

的未設置CSS關鍵詞重置屬性,以它的繼承如果繼承父代,則返回值;如果不是,則返回initial value。換言之,它的行爲與第一種情況下的inherit關鍵字類似,並且與第二種情況下的initial關鍵字類似。它可以應用於任何CSS屬性,包括CSS速記全部。