2010-03-25 128 views
11

我最初希望在我的HTML文檔中包含一個.css文件,用於加載多個其他.css文件,以便爲開發目的劃分一些代碼塊。CSS導入或多個CSS文件

我創建了一個測試頁:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>The Recipe Site</title> 
<link rel='stylesheet' href='/css/main.css'> 
<link rel='stylesheet' href='/css/site_header.css'> 
<!-- Let google host jQuery for us, maybeb replace with their api --> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
<script type="text/javascript" src="/js/main.js"></script> 
</head> 
<body> 
    <div id="site_container"> 
    <div id="site_header"><?php include_once($r->base_dir . "inc/site_header.inc.php"); ?><!-- Include File, Update on ajax request. --></div> 
    <div id="site_content"> 
    Some main content. 
    </div> 
    <div id="site_footer"><?php include_once($r->base_dir . "inc/site_footer.inc.php"); ?><!-- Include File, Update on ajax request. --></div> 
    </div> 
</body> 
</html> 

文件:/css/main.css

/* Reset Default Padding & Margin */ 
* { 
margin: 0; 
padding: 0; 
border: 0; 
} 


/* Set Our Float Classes */ 
.clear { clear: both; } 
.right { float: right; } 
.left { float: left; } 


/* Setup the main body/site container */ 
body { 
background: url(/images/wallpaper.png) repeat; 
color: #000000;  
text-align: center; 
font: 62.5%/1.5 "Lucida Grande", "Lucida Sans", Tahoma, Verdana, sans-serif; 
} 

#site_container { 
background-color: #FFFFFF; 
height: 100%; 
margin-left: auto; 
margin-right: auto; 
text-align: left; 
width: 100%; 
} 


/* Some style sheet includes */ 
/* @import "/css/site_header.css"; */ 


/* Default Font Sizes */ 
h1 { font-size: 2.2em; } 
h2 { font-size: 2.0em; } 
h3 { font-size: 1.8em; } 
h4 { font-size: 1.6em; } 
h5 { font-size: 1.4em; } 
p { font-size: 1.2em; } 


/* Default Form Layout */ 
input.text { 
padding: 3px; 
border: 1px solid #999999;  
} 


/* Default Table Reset */ 
table { 
border-spacing: 0; 
border-collapse: collapse; 
} 

td{ 
text-align: left; 
font-weight: normal; 
} 


/* Cause not all browsers know what HTML5 is... */ 
header { display:block;} 
footer { display:block;} 

現在的文件:/css/site_header.css:

#site_header { 
background-color: #c0c0c0; 
height: 100px; 
position: absolute; 
top: 100px; 
width: 100%; 
} 

問題:

當我使用上面的代碼時,site_header div沒有任何格式/背景。 當我從site_header.css的HTML文檔中刪除鏈接行,而是使用@import url(「/ css/site_header.css」);在我的main.css文件中,相同的結果 - 沒有得到爲同一個div呈現。

現在,當我從site_header.css的CSS標記,並把它添加到main.css的,在div獲取呈現細...

所以我想知道如果有多個CSS文件是某種不工作.. 。或者可能在我之前的css結尾處有css標記存在某種衝突,但我無法找到它的原因。

+1

讓我來添加一篇文章的鏈接,演示如何通過導入使用多個css:[使用CSS @import規則](http://www.cssnewbie.com/css-import-rule/) – sumid 2012-11-06 02:13:18

回答

2

使用firebug檢查div並查看正在應用哪種樣式,您可能會獲得更多的洞察。

0

對於CSS這樣的問題,我會推薦使用firebug。你將能夠看到你的site_header.css是否正確加載。

如果它正在加載,您將能夠看到哪些樣式正在應用於哪些元素,可能有些被覆蓋?

13

@import指令必須在您的CSS中排在第一位。只要一種風格被瀏覽器擊中,所有其他導入線都將被忽略。

引述WC3:

「任何@import規則必須(如果存在除@charset規則, )先於所有其他 規則」

http://www.w3.org/TR/CSS2/cascade.html#at-import

需要考慮的一件事是,每個@import仍然會導致一個HTTP請求,所以它不會比使用多個鏈接標記更高效秒。事實上,它可能效率較低,因爲進口可能是順序而不是並行請求。 See this article。海事組織也增加了複雜性,因爲你最終在兩個地方(標記的頭標記加上一個或多個CSS文件)和一個簡單的鏈接標記列表管理CSS引用。

我還建議您在網站生產時將CSS文件組合到哪裏,因爲它會減少HTTP開銷。

+0

這是一篇很棒的文章! – 2010-03-25 20:13:52

3

首先,你有無效的標記。鏈接標籤必須關閉......

<link rel="stylesheet" href="/css/main.css" /> 

其次,你爲什麼不(在鏈接標籤在這裏你碰巧使用單引號)使用雙引號始終如一地爲元素的屬性?這不是問題的一部分,但我覺得你會混淆不同的這種語法約定令人望而生畏。

最後,我不會推薦使用@import,因爲它沒有提供令人信服的好處。它必須是CSS文件中的第一件事。每個額外的CSS文件仍然需要額外的HTTP請求。最重要的是,當您爲導入指定目標媒體時,IE會調用它。我堅持古老的經典鏈接標籤,因爲它的工作原理(鑑於你有有效的標記!)。

6

我可以這麼說嗎,在這裏,請將CSS文件相關的圖像放在CSS文件夾本身中,而不是放在/ images /中。

CSS的要點是風格和內容的分離,只有內容圖像應該放在/ images /中。任何由CSS稱爲映像應放置在同一個目錄和pathlessly調用,如:

body { 
background: url(wallpaper.png) repeat; 
} 

的,如果涉及到轉變作風,或使多種樣式,它只是更新的情況下,以後的日子這樣一個鏈接並移動一個文件夾(/ css /),而不是散佈在整個文件系統中的大量圖像。另外,使用文件的絕對路徑總是一個壞主意(如/images/wallpaper.png)。

+0

好主意 - 從來沒有想過... – Yarin 2011-01-11 16:27:45

+1

Twitter的Bootstrap將其所有圖像放在「img」而不是它自己的「css」目錄中。 CSS文件將它們引用爲「../img/ ..」。 – ChrisCantrell 2013-05-10 17:44:02

0

使用@import規則到您的的main.css文件,如:

@import url("css/site_header.css");(此代碼應該在你main.css頂部)

上述進口片段會結合您的多個將css文件轉換爲單個css文件 ,然後將main.css文件用於您的HTML。