为什么要在HTML中使用容器div?


74

我注意到一种常见的技术是将一个通用容器div放在body标签的根目录中:

<html>
  <head>
    ...
  </head>
  <body>
    <div id="container">
      ...
    </div>
  </body>
</html>

有这样做的正当理由吗?为什么CSS不能仅引用body标签?

Answers:


68

容器div(有时是内容div)几乎总是用于允许更复杂的CSS样式。身体标签在某些方面很特别。浏览器不会像对待普通div那样对待它;其位置和尺寸与浏览器窗口相关。

但是容器div只是一个div,您可以使用边距和边框对其进行样式设置。您可以为其设置固定的宽度,并可以将其居中margin-left: auto; margin-right: auto

另外,内容(例如,版权声明)可以在容器div的外部,但不能在主体的外部,允许内容在边框的外部。


12

此方法使您可以更加灵活地设置整个内容的样式。有效地创建两个可以设置样式的容器。HTML Body标签用作背景,而div包含包含您的内容的容器ID。

然后,您可以在页面中放置内容,同时设置背景或其他效果的样式,而不会出现问题。可以将其视为内容的“框架”。


2

对我而言,最常见的原因是:

  1. 布局可以具有固定宽度(是的,我知道,对于喜欢固定宽度的设计师,我做了很多工作),并且
  2. 因此,可以通过将text-align:center应用于主体,然后将margin:auto应用于容器div的左侧和右侧来使布局居中。

1
容器也需要固定的“百分比”宽度。(基本上是流体宽度)
Armstrongest

这些天2确实无关紧要,您只需要IE 5.5和更早的版本就可以使用,而且大多数人不支持旧版本的IE。
昆汀2010年

1

某些浏览器(<cough> Internet Explorer)不支持主体上的某些属性,尤其是widthmax-width


1

我知道这是一个老问题,但是我自己重新设计网站时就遇到了这个问题。Troy Dalmasso让我思考。他说的很对。因此,我开始看看是否可以在没有容器div的情况下使它工作。

我可以设定身体的宽度。在我的情况下为960px。

这是我使用的CSS:

html {
  text-align:center;
}

body {
  margin: 0 auto;
  width: 960px;
}

这样可以很好地使内联块居中,后者也具有固定的宽度。

希望这对任何人都有用。


1

这是前端编码人员犯下的最大的不良习惯之一。

我上面所有的答案都是错误的。主体确实具有宽度,边距,边界等,并应作为您的初始容器。html元素应按预期用作背景“画布”。在许多站点中,我只需要使用一次容器div。

我愿意是,这些使用容器div的相同编码器也在divs内的div上乱扔了它们的标记-在其他任何地方。

不要做。谨慎使用div,以精益标记为目标。

-=-=-更新-不确定SO有什么问题,因为我可以编辑5年前的答案,但是我无法回复评论,因为它说我需要50 Rep,然后才能这样做。因此,我会将答案添加到此处收到的答复中。-=-=-

我是在回答多年后才发现的,并且看到一些后续答复。而且,您当然开玩笑吗?

您在我的域中找到的已安装占位符站点非常明确地是一个基本的CMS安装,没有内容(在首页上说得很清楚),我从未声称是我的标记或样式,甚至在我的帖子中也没有提到。那不是我的标记和样式。那是Silverstripe的默认模板。我对此不承担任何责任。不过,也许这是我能想到的仅有两个示例之一,这将需要一个容器div。

示例1:旨在容纳未知数的通用模板。在这种情况下,您将看到一个默认CMS模板,该模板的div内的div内有div。

惊恐的事件。

示例2:三列布局以使页脚正确清除(我认为这可能是我需要容器div的场景,因为那是几年前,所以很难记住)。

我确实为我的域构建了一个主题(甚至尚未完成),并开始加载内容。对于这个容易实现的语义标记示例,请单击链接。

http://www.bitbeyond.com

坦白说,我感到困惑的是,人们认为您实际上需要一个容器div并从一个容器div入手,甚至只尝试一个身体。正如我听说CSS规范的原始作者之一解释过的那样,该主体被用作“初始容器”。

应该根据需要添加标记,而不是因为那只是您看到的方式。


我们可以看到其中一个网站吗?
Joe Holloway 2010年

13
我正要指向他的网站,但这使用了一个容器和嵌套的div。
chrisbtoo 2010年

是的,该站点body > div#BgContainer > div#Container似乎矛盾,但是也许那是数十次中的一次。PS:我没有投票反对,我很好奇看到我不断听到的这些纯语义网站之一。
Joe Holloway 2010年

现代浏览器可能就是这种情况。html { font-family: sans-serif; }例如,我一直使用html元素样式。但是,正如其他人提到的那样,这不适用于旧版浏览器中的某些CSS属性。
Jonathan Tran

1
我同意。如今,大多数站点都具有许多嵌套的div,因此代码变得非常难以阅读。对我来说,很清楚,大多数开发人员都在使用网站构建器!网站建设者使用大量冗余代码。有一次,我仅使用基本表来重建站点即可完成相同的确切布局/功能,而我使用的代码减少了90%。自动创建的网站实际上使用了10倍太多的代码!全部在DIV中!完全不需要。
ZealousHypocrites

0

div标签用于为网页设置样式,以使其在视觉上吸引网站的用户或观众。在html中使用container-div将使网站看起来更加专业和有吸引力,因此会有更多的人想要浏览您的页面。


0

好,

容器div非常好,因为如果要使站点居中,就不能仅使用body或html来实现...但是,可以使用divs。为什么要装容器?通常使用它,只是因为其本身的代码必须干净且可读。因此,这就是容器...它包含所有网站,以防万一您想弄乱它:)

祝好运


-2

默认情况下,大多数浏览器都采用网页大小。因此,有时页面在不同的浏览器中不会显示相同的内容。因此,通过使用用户可以更改为特定的HTML元素。例如,用户可以添加特定HTML标签的边距,大小,宽度,高度等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.