2010-11-06 33 views
1

我似乎无法让我的CSS链接到当我使用一个div:为什么当我拥有#id #id时CSS不能工作?

[in stylesheet(style.css)] 

#sitecontainer .header { 
    background-image:url('/images/header-background'); 
} 


<div id="sitecontainer"> 
     <div id="header"></div> 
     <div id="content"></div> 
     <div id="footer"></div> 
</div> 

然而,当我把CSS的内联在它的工作页面。有任何想法吗?

皮特

回答

10

你的CSS是在头部使用类选择:

.header 

,而不是。

#header 

如果你有HTML标记,而像这样的这样的工作:

<div id="sitecontainer"> 
     <div class="header"></div> 
     <div class="content"></div> 
     <div class="footer"></div> 
</div> 

但在你的情况,你可以使用:

#sitecontainer #header 

甚至更​​好的(除非你在你的网站上用这个特殊的标题做一些非常具体的事情)你应该把它缩减到

#header { /* CSS rules here */ } 

欲了解更多信息 - A really good article of the various CSS selection methods is here on NetTuts

+0

在我看来,标题,内容和页脚都是非常通用的布局元素。他们可能会再次出现在您的页面中更深的嵌套。例如:您的网站有一个标题,内容和页脚,并且在您的内容中,您可能想要显示一些文本文档,这些文档本身在语义上也具有标题,内容和页脚,我认为类是更好的方法。 – Jan 2010-11-06 12:18:54

+0

我倾向于同意。使用HTML5标题,页脚和文章都是可重复的元素,因此要有类似的语义,类是要走的路。 – isNaN1247 2010-11-06 13:02:57

+0

我仍然喜欢给我的主页眉和页脚页眉和页脚的id,子页眉和页脚可以有一个类。 – zzzzBov 2010-11-06 17:22:35

2

你需要在这两个地方#

#sitecontainer #header { 
    background-image:url('/images/header-background'); 
} 

确保您的ID在页面中是独一无二的,虽然,或者这将导致其他问题。如果你有多个标题,然后使用class属性来代替:

<div id="sitecontainer"> 
    <div class="header"></div> 
    <div class="content"></div> 
    <div class="footer"></div> 
</div> 

...并与.header类选择使用当前的CSS。

+1

-.-是不是只是一个错字 – Harmen 2010-11-06 11:24:34

+0

@哈尔门 - 它可能是,但假设明显不是问题只会导致无休止的头痛,解决明显的问题,*然后*看看它是否仍然破损:)问题中的代码不起作用...... *从不*认为它只是“错字”,许多*许多*,**许多**编程问题都是错别字。 – 2010-11-06 11:27:15

2

只需使用#header - 因为它是一个ID,它应该已经是唯一的(编辑:只要没有其他页面,你不希望这种情况发生,并且不具有sitecontainer)。

+3

尽管它在页面中应该是唯一的,但它在所有*页面中可能并不唯一。例如,如果OP在另一个不应设置样式的页面上有'

',那该怎么办? – 2010-11-06 11:25:59

+0

@Nick Craver:嗯,没错。我假设他在所有页面上命名容器“sitecontainer”。 – thejh 2010-11-06 11:33:14