【问题标题】:Why there is a blank line at the top of the page? [duplicate]为什么页面顶部有一个空行? [复制]
【发布时间】:2018-02-25 15:03:53
【问题描述】:

我刚刚学习 HTML/CSS 几天,但遇到了以下问题: 为什么页面顶部有一个空行?有人能告诉我我的代码有什么问题或遗漏了什么吗?我该如何解决?

这是我的代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    body {
      margin: 0;
      padding: 0;
    }
    
    header {
      text-align: center;
      background-color: lightgray;
    }
    
    header h1 {
      font-size: 70px;
    }
    
    ul {
      background-color: gray;
      padding: 10px;
    }
    
    li {
      display: inline;
      margin: 0 5px 0 5px;
    }
    
    a {
      color: white;
      text-decoration: none;
      text-transform: uppercase;
      font-size: 18px;
    }
  </style>
</head>

<body>
  <header>
    <h1>My Website</h1>
    <p>A sample website</p>
    <ul>
      <li><a href="#">HOMEPAGE</a></li>
      <li><a href="#">ABOUT ME</a></li>
      <li><a href="#">CONTACT</a></li>
    </ul>
  </header>
</body>

</html>

提前致谢!

【问题讨论】:

    标签: html css margin


    【解决方案1】:

    标签 h1 的边距在 css 中设为零。

    header h1{
    margin: 0px;
    }
    

    【讨论】:

      【解决方案2】:

      要解决这个问题,您可以在头文件类中添加margin-top:-45px;

      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
          body {
            margin: 0;
            padding: 0;
          }
          
          header {
            text-align: center;
            margin-top:-45px;
            background-color: lightgray;
          }
          
          header h1 {
            font-size: 70px;
          }
          
          ul {
            background-color: gray;
            padding: 10px;
          }
          
          li {
            display: inline;
            margin: 0 5px 0 5px;
          }
          
          a {
            color: white;
            text-decoration: none;
            text-transform: uppercase;
            font-size: 18px;
          }
        </style>
      </head>
      
      <body>
        <header>
          <h1>My Website</h1>
          <p>A sample website</p>
          <ul>
            <li><a href="#">HOMEPAGE</a></li>
            <li><a href="#">ABOUT ME</a></li>
            <li><a href="#">CONTACT</a></li>
          </ul>
        </header>
        
      </body>
      
      </html>

      【讨论】:

        【解决方案3】:

        上面的空行是浏览器默认的css样式造成的。

        使用 normalize.css 将所有浏览器应用的 CSS 重置为一个通用的。这样您就有了应用样式的水平游乐场。

        https://github.com/necolas/normalize.css/

        【讨论】:

          【解决方案4】:

          这是因为 父元素和第一个子元素 margin collapsingh1 与其父元素的边距之间

          一种解决方案是添加border: 1px solid lightgray 或添加padding,或者您可以将margin 本身重置为零 - 请参见下面的演示:

          body {
            margin: 0;
            padding: 0;
          }
          
          header {
            text-align: center;
            background-color: lightgray;
            border: 1px solid lightgray;
          }
          
          header h1 {
            font-size: 70px;
          }
          
          ul {
            background-color: gray;
            padding: 10px;
          }
          
          li {
            display: inline;
            margin: 0 5px 0 5px;
          }
          
          a {
            color: white;
            text-decoration: none;
            text-transform: uppercase;
            font-size: 18px;
          }
          <header>
            <h1>My Website</h1>
            <p>A sample website</p>
            <ul>
              <li><a href="#">HOMEPAGE</a></li>
              <li><a href="#">ABOUT ME</a></li>
              <li><a href="#">CONTACT</a></li>
            </ul>
          </header>

          【讨论】:

          • 我可以使用 reset.css 文件来防止这种情况吗?
          • reset 会将margin 设置为 zero 我猜 - 所以这也可以工作......
          • 我明白了。非常感谢:))
          【解决方案5】:

          这是因为您的h1 有边距。要解决此问题,您需要像这样重置h1margin-top

          h1 {
            margin-top: 0;
          }
          

          这里是工作的 sn-p:

          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>Document</title>
          <style>
              body{
                  margin: 0;
                  padding: 0;
              }
          
              header{
                  text-align: center;
                  background-color: lightgray;
              }
          
              header h1{
                  font-size: 70px;
                  margin-top: 0;
              }
          
              ul{
                  background-color: gray;
                  padding: 10px;
              }
          
              li{
                  display: inline;
                  margin: 0 5px 0 5px;
              }
          
              a{
                  color: white;
                  text-decoration: none;
                  text-transform: uppercase;
                  font-size: 18px;
              }
          </style>
          <body>
          <header>
              <h1>My Website</h1>
              <p>A sample website</p>
              <ul>
                  <li><a href="#">HOMEPAGE</a></li>
                  <li><a href="#">ABOUT ME</a></li>
                  <li><a href="#">CONTACT</a></li>
              </ul>
          </header>
          </body>

          【讨论】:

          • 你能告诉我为什么我应该申请 'margin-top: 0;'到

            但不是
            ?

          • @DunDev,因为在开发人员工具 inspectoe 中我们可以看到,header 没有边距,h1 有顶部和底部边距,但只有顶部边距会破坏您的标记。
          猜你喜欢
          • 2016-04-08
          • 2020-01-16
          • 2016-07-13
          • 1970-01-01
          • 2019-06-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-20
          • 1970-01-01
          相关资源
          最近更新 更多