HTML 边距和填充异常行为

HTML Margin and padding extrange behaviour

好吧,我正在处理网页。我想要左边的黑色和右边的内容。这是简单的 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="style/main.css" >
  <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame 
       Remove this if you use the .htaccess -->
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>indexhtml</title>
  <meta name="description" content="">
  <meta name="author" content="Lorena Soledad">

  <meta name="viewport" content="width=device-width; initial-scale=1.0">

  <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
  <link rel="shortcut icon" href="/favicon.ico">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
</head>

<body>

<aside id="information">
    <header>
        <h1>Web Title</h1>
    </header>

    <footer>
        <p>Description</p>
    </footer>
</aside>

<section id="content">
    <nav>
        <ul>
            <li>Menu 1</li>
            <li>Menu 2</li>
            <li>Menu 3</li>
            <li>Menu 4</li>
        </ul>
    </nav>

    <article>
    </article>
</section>

</body>
</html>

这是相应的 CSS 样式表:

html, body {
margin: 0;
    padding: 0;
    height: 100%;
    width: 100%; /*Para ocupar todo el ancho y el alto de la pantalla*/
}


section#content {
    background-image: url("img/crossword.png");
    width: 60%;
    height: 100%;
}


aside#information {
    background-color: black;
    float: left;
    width: 30%;
    height: 100%;
}

问题是,我希望正文填满整个浏览器。所以,正如你所看到的,我使用了这个:

html, body {
    margin: 0;
        padding: 0;
        height: 100%;
        width: 100%;
    }

但是浏览器的顶部还有几个像素,就像this

所以...在网络上搜索我找到了下一个代码,使用通用选择器,并将 margin 和 padding 属性从 html 和 body 中移出,就像这样:

* {
    margin: 0;
    padding: 0;
}

html, body {
    height: 100%;
    width: 100%;
}

这成功了!我不知道为什么。 Html 标签不应该是包含所有内容的第一个标签? 我的意思是,为什么当我在 html/body 标签的 中定义边距和填充时它不起作用,但是当我在 通用选择器中定义它时它却起作用?没看懂。

我希望有人能给我解释一下。 谢谢。

margin 是由您的 ul 标签引起的,它正在将您的 section 推低。

ul 标记的顶部和底部边距默认为 1em,第二个 CSS 块中的通用选择器正在删除它。

http://jsfiddle.net/bbr716yh/

只需使用 chrome 并右键单击该白色区域,选择检查元素,您应该会看到它是什么。也许放在一边或 header 元素...