就像我之前的其他人所说的那样,您正在使用id
作为唯一标识符的标签。而您应该使用 aclass
跨多个元素应用样式。
查看 W3C 定义的内容id
:( http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 )
元素标识符:id 和 class 属性
属性定义
id = name [CS] 此属性为元素分配名称。此名称在文档中必须是唯一的。
class = cdata-list [CS] 此属性将一个类名或一组类名分配给一个元素。可以为任意数量的元素分配相同的类名或名称。多个类名必须用空格字符分隔。
更有趣的是,您说您的示例有效,并且在大多数浏览器中都有效。这并不能使它有效甚至是好的 HTML/CSS,只是某些浏览器会发现开发人员的缺点,并将呈现不符合标准的代码,就好像它符合标准一样。
这是一个永远行不通的例子。您可能知道id
标签可用于命名锚点。例如
<a href="#content">Jump to content</a>
<div id="content">
some content
</div>
<div id="content">
some other content
</div>
在这个例子中,命名锚应该链接到哪个元素?在大多数情况下,我会假设它会转到第一个元素。然而,这可能不是开发人员想要的。
该id
元素的用途不仅仅是将样式应用于元素,W3C 继续声明:
id 属性在 HTML 中有几个角色:
- 作为样式表选择器。
- 作为超文本链接的目标锚。
- 作为从脚本中引用特定元素的一种方式。
- 作为声明的 OBJECT 元素的名称。
- 用于用户代理的通用处理(例如,在从 HTML 页面提取数据到数据库时识别字段,将 HTML 文档转换为其他格式等)。
- 另一方面,class 属性将一个或多个类名分配给一个元素;该元素可以说属于这些类。一个类名可以由多个元素实例共享。
class 属性在 HTML 中有几个角色:
- 作为样式表选择器(当作者希望将样式信息分配给一组元素时)。
- 用于用户代理的通用处理。
您应该编写符合标准的代码,以便知道它在符合标准的浏览器中起作用。结果在更广泛的浏览器中更加可预测和稳定,并且更有可能在未来的版本中工作。
编辑:回应OP的评论:
CSS:
.content {
width: 950px;
margin: auto; // Assuming you want to centre this
}
无论您应用该类.content
,其宽度都是 950 像素。您不需要在#top
元素上设置 100% 的宽度,因为它是块级 div,自然会扩展到 100% 的宽度。
HTML:
<div id="top">
<div id="navigation" class="content">
</div>
</div>
<div id="main" class="content">
</div>
<div id="footer" class="content">
</div>