18

这似乎是一个常见问题,但我找到的解决方案都没有为我工作。

HTML

<html>
    <head>
        <link rel="stylesheet" href="c/lasrs.css" type="text/css" />
    </head>
    <body>
        <div class="header">
            <img src="i/header1.png">
        </div>
        <div class="content">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus. 
               Morbi ut mi. Nullam enim leo, egestas id, condimentum at, laoreet mattis, 
               massa. Sed eleifend nonummy diam. Praesent mauris ante, elementum et, 
               bibendum at, posuere sit amet, nibh.</p>
        </div>
    </body>
</html>

CSS

body {
    min-width: 950px;
    background-color: #FFFFFF;
    color: #333333;
}

.header {
    width: 950px;
    height: 171px;
    margin: 0px auto;
    padding: 0px;
    background-color: #CCCCCC;
    position: relative;
}

.content {
    width: 950px;
    margin: 0px auto;
    padding: 0px;
    background-color: #E3EEF9;
    position: relative;
}

我故意破坏了图像路径并为.headerdiv 设置了背景颜色,以便我可以看到它们是否在触摸。这是我的页面的样子:

页面示例

如您所见,我尝试将填充和边距都设置divs为 0。

为什么还有差距?

4

7 回答 7

20

这是由于以下原因:

<p>浏览器会在每个元素前后自动添加一些空格(边距) 。可以使用 CSS 修改边距(使用边距属性)。

所以试试:

p {
     margin: 0px;
}

注意:浏览器也会在其他元素上添加默认样式!这在不同的情况下既有用又烦人。有三种方法可以解决这个问题:

  1. 完全删除浏览器可能具有的任何默认样式。这是通过使用重置样式表来完成的。最受欢迎的是Eric Meyer 的 CSS Reset。如果您想全力以赴并在任何浏览器中拥有一个完全干净的开始,请使用 Meyer 的技术。此方法优于使用慢速*{ margin:0; padding:0; }重置方法(请在此处阅读原因
  2. 将样式表标准化为您自己的默认值。网页设计师的一大烦恼是不同的浏览器使用不同的默认样式。但是,完全重置会带来重新定义所有元素样式的耗时麻烦。因此,您可以通过使用一组预定义的一致且合理的默认样式来规范化浏览器的所有默认样式。常用的方法是为此使用normalize.cssTwitterGithubSoundCloud使用这个!)

  3. 必要时调整默认值或有意识地绕过默认值。使用默认值的最常见方法(并不是说这是最好的方法)是知道它们存在并在必要时调整它们。默认样式的存在是有原因的:它们可以帮助开发人员快速获得他们想要的外观。眼神是不是有点不对劲?只需相应地调整样式。但是,请确保为正确的元素使用正确的标签。例如,您应该使用标签(无默认值) ,而不是删除内联文本<p>的边距<span>margin

这应该可以帮助您了解幕后发生的事情。

于 2013-07-31T13:36:04.093 回答
6

您在段落中的边距溢出 div (这是正常的)您可以设置

p {
   margin: 0;
}

或将溢出隐藏应用到您的 div

div {
  overflow: hidden;
}
于 2013-07-31T13:45:08.913 回答
4

利用

*{
    padding:0;
    margin:0;
}

以你的风格

于 2013-07-31T13:33:29.273 回答
0

尝试这个:

http://jsfiddle.net/JKS3k/3/

CSS

p{
   margin:0;           
}

或者

* {
margin:0;
padding:0;
}
于 2013-07-31T13:35:07.110 回答
0

添加这个

*{
    margin: 0;
    padding: 0;
}
于 2013-07-31T13:35:19.327 回答
0

两个div都很感人。默认情况下,DIV 的边距/填充始终为 0,因此您的修改无效。然而<p>确实有一个边距,并且因为它嵌套在 div 中,所以看起来 div 有一个填充。

p {
    margin: 0;
}

会解决这个问题。

于 2013-07-31T13:39:17.353 回答
0

尝试使用一些重置 css,因为所有浏览器都带有一些默认样式链接边距、填充、行高、字体样式,并且您需要从非样式元素开始。

我建议使用 Eric Meyer 重置 CSS ( http://meyerweb.com/eric/tools/css/reset/ )

于 2013-07-31T13:39:43.813 回答