为啥页面顶部有一个空行? [复制]

Posted

技术标签:

【中文标题】为啥页面顶部有一个空行? [复制]【英文标题】: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>

提前致谢!

【问题讨论】:

【参考方案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 有顶部和底部边距,但只有顶部边距会破坏您的标记。

以上是关于为啥页面顶部有一个空行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 HTML/CSS 网站顶部有空白? [复制]

为啥即使另一个活动在顶部,launchMode="singleTask" 的启动器活动总是被推到后台堆栈的顶部? [复制]

php生成的html 顶部有一空行的解决办法

为啥我的链接卡在浏览器的顶部边框上? [复制]

href="#" 转到页面顶部 - 阻止? [复制]

为啥网站在手机端加载加载完成会跳回顶部?