2012-07-20 265 views
1

在同一頁面上引用了兩個CSS文件:一個generic.css文件和一個custom.css文件。通用文件的默認樣式由custom.css文件爲相同元素覆蓋。這允許網站的用戶自定義或「皮膚」他們的網頁,而不需要重新創建整個generic.css文件。只有少數樣式會被覆蓋。覆蓋背景圖像的CSS樣式

我的問題如下:如果generic.css文件具有帶有背景圖像的元素的樣式,並且該custom.css中具有不同背景圖像的相同樣式被覆蓋,則是有史以來下載的第一個圖像瀏覽器?

此外,我想知道這是否是不好的做法 - 使用另一個自定義CSS文件自定義或「剝皮」通用CSS文件以覆蓋一些樣式,包括指定不同的背景圖像。

+0

檢查瓦特/ httpfox的活動 – 2012-07-20 02:28:20

+1

好建議。謝謝我會的。但是,這隻會覆蓋Firefox。我的問題是基於標準的瀏覽器的預期行爲應該如何(如果涉及這部分的話)。此外,如果這是不好的做法或不。 – stepanian 2012-07-20 02:31:47

回答

1

雖然不完全確定,但this site對此進行了一些測試。從涉及您的問題該網站的顯著的說法是:

CSS圖像不會在它們出現在 CSS,但在其中,他們是所謂的HTML的訂單的訂貨拉開序幕。我不確定 是什麼時候啓動下載的,但是我的猜測是 它恰好在CSS規則匹配後發生,當 屬性值被分配給DOM元素時。

這至少暫時印證了什麼,我想我在我的腦海裏讀取這個後面想起幾年前,即未顯示過這樣的背景圖像(如generic.css圖像被覆蓋由custom.css圖像)從未下載過。

對此的進一步確認將是典型的圖像預加載器腳本,在精靈圖像之前過去很常見(並且在某些用途中仍然可以找到)。它被設計爲下載圖像,將在css中使用:hover,因爲如果沒有它,圖像將無法加載,直到第一次懸停開始,這會導致難看的延遲。因此,也爭辯說,除非實際顯示(或預加載),否則背景圖像本身不會被加載。

我不認爲通常有任何關於「skinning」的問題,除非你基本上用custom.css覆蓋了大部分或全部的generic.css,那麼可以爭辯說,爲什麼要加載泛型。但正如你所說,通常只有幾種風格被覆蓋。

1

我想我回答NONO不良做法。因爲當瀏覽器可讀/可執行css文件時,瀏覽器將進行比較以找到相同的值或css文件之間的差異,然後將它們合併。

易例如:對文件

css1.css有一行:

.test {display: block; width: 100%; height: 600px; background: #991100 url("image1.jpg") center top; border: 1px solid red;} 

然後CSS2。CSS有也行:

.test {background: #991100 url("image2.jpg") no-repeat center center;} 

將被執行,並在瀏覽器上運行的組合的結果是:

.test {display: block; width: 100%; height: 600px; background: url("image2.jpg") no-repeat center center # 991100; border: 1px solid red} 

其中「背景:#991100 URL(」圖像1。 jpg「)中心頂部;」讀取但不被瀏覽器調用/執行。

據我所知文件css1.css的價值css2.css的價值堆疊。如果有css3.css文件怎麼辦?那麼文件css3.css也將堆疊在css1.css和css2.css的組合上。

希望它有幫助。

+0

謝謝。這非常有幫助。你和ScottS都提供了非常好的答案。 ScottS首先回答。 +1給你有用的解釋。 – stepanian 2012-07-20 04:00:18

+0

不客氣@stepanian :) – Fredy 2012-07-20 04:13:09