2010-03-25 56 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。