CSS:如何摆脱默认窗口“填充”?设置为 100% 宽度的元素不会到达窗口的边框

Posted

技术标签:

【中文标题】CSS:如何摆脱默认窗口“填充”?设置为 100% 宽度的元素不会到达窗口的边框【英文标题】:CSS: How can I get rid of the default window "padding"? An element set to 100% width doesn't reach the window's borders 【发布时间】:2011-06-01 23:54:49 【问题描述】:

所以我有一个直接放在 body 内的元素:

<body>
    <div id="header">Some stuff...</div>
    Other stuff...
</body>

以下是使用的CSS:

body
    text-align:center;

#header
    margin:auto;

所以#header div 设置为 100% 宽度(默认)并居中。问题是,窗口边框和#header 元素之间有一个“空格”......就像:

|  |----header----|   |
^window border        ^window border

我尝试使用 javascript 对其进行调整,它成功地将元素调整为确切的窗口宽度,但它并没有消除“空格”:

$('#header').width($(window).width());

一种解决方案似乎是添加以下 CSS 规则(并保留上面的 javascript):

#header
    margin:auto;
    position:relative;
    top:-8px;
    left:-8px;

在我的浏览器中,这个“空间”是 8px - 但我不确定所有浏览器是否都一样?我在 Ubuntu 上使用 Firefox...

那么摆脱这个空间的正确方法是什么 - 如果它是我上面使用的,那么所有浏览器的行为都一样吗?

【问题讨论】:

【参考方案1】:

body 在所有浏览器上都有默认边距,所以您只需将它们剃掉即可:

body 
    margin: 0;
    text-align: center;

然后您可以从#header 中删除负边距。

【讨论】:

哦,天哪,我试图删除主体填充,但我没有想到边距......我认为主体与窗口是一样的,并且它们的“限制”在哪里在同一个地方...我不知道这是否可以理解。^^ 无论如何谢谢! @Alex:与浏览器视口(可以这么说)更相关的元素是html,而不是body。查看this answer 了解更多信息。【参考方案2】:

解决这个问题的一个简单方法是去掉所有的边距。您可以通过以下代码做到这一点:

* 
    margin:0;

这将解决问题并让您更好地控制所有元素的边距。

【讨论】:

需要注意的是,这是一个矫枉过正的解决方案,在某些情况下可能会很慢。【参考方案3】:

将这些添加到body 中的style 标记中,如下所示:

body  margin:0px; padding:0px; 

它对我有用。祝你好运!!

【讨论】:

【参考方案4】:

我发现即使将 BODY MARGIN 设置为零,此问题仍然存在。

但事实证明有一个简单的解决方法。你需要做的就是给你的 HEADER 标签一个 1px 的边框,以及将 BODY MARGIN 设置为零,如下所示。

body  margin:0px; 

header  border:1px black solid; 

不知道为什么会这样,但我使用的是 Chrome 浏览器。显然你也可以改变边框的颜色来匹配你的标题颜色。

【讨论】:

以上是关于CSS:如何摆脱默认窗口“填充”?设置为 100% 宽度的元素不会到达窗口的边框的主要内容,如果未能解决你的问题,请参考以下文章

当 CSS 中存在填充时,如何使 TextArea 的宽度为 100% 而不会溢出?

HTML & CSS:如何创建四个相同大小的标签,填充 100% 宽度?

如何使用css和javascript创建泪滴/水滴填充[重复]

如何css设置div页面100%高度, body页面全高

如何摆脱QT5中的默认窗口

CSS和输入100%宽度[重复]