问题
I've just learning HTML/CSS for a few days and I'm having trouble with this: Why there is a blank line at the top of the page? Can someone tell me what was wrong or missing from my code? How can I fix it?
Here's my code:
<!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>
Thanks in advance!
回答1:
This occurs because of parent and first child margin collapsing between the h1 and the margin of its parent element(s)
One solution would be to add border: 1px solid lightgray or add padding, or you can reset the margin itself to zero - see demo below:
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>
回答2:
The above blank line is caused by the browsers default css style.
Use normalize.css to reset the CSS applied by all the browser to a common one. So that you have level playgroud to apply styles.
https://github.com/necolas/normalize.css/
回答3:
It's because your h1 has margins. To solve the issue, you need to reset h1's margin-top like this:
h1 {
margin-top: 0;
}
And here is the working snippet:
<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>
回答4:
To solve this issue you can add margin-top:-45px; in header class.
<!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>
回答5:
It is margin of tag h1 make it zero in css.
header h1{
margin: 0px;
}
来源:https://stackoverflow.com/questions/46256201/why-there-is-a-blank-line-at-the-top-of-the-page