h1
元素会导致滚动条出现。有人能解释一下为什么吗?
html, body {
margin: 0;
padding: 0;
height: 100%;
}
header {
height:10%;
}
section {
height:90%;
}
<header>
<h1>
Hello
</h1>
</header>
<section>
test
</section>
h1
通常有默认的一些垂直边距,通常为0.67em
。h1
的顶部外边距会折叠。height
不包括外边距的高度。h1
的顶部外边距会折叠,所以它表现得像是外边距属于header
而不是h1
。由于h1
的内容高度为10%
,所以它的总高度将为calc(10% + 0.67em)
。auto
height
,底部外边距不会折叠。参考自折叠margin,
因此,您可以执行以下任何操作:如果[...]两个外边距相邻且都属于相邻的盒子边缘[...]例如:
- 一个盒子的顶部外边距和它的第一个流动子元素的顶部外边距
- 最后一个流动子元素的底部外边距和父元素的底部外边距如果父元素具有
auto
计算高度。
h1
的顶部外边距box-sizing: margin-box
。它可能会被拒绝。h1
具有由 默认样式表 应用的边距。margin-top: .67em
和 margin-bottom: .67em
)添加到代码中的 height: 100%
中时,这会超出视口高度,从而启动垂直滚动条。h1
设置 margin: 0
。box-sizing: content-box
还是 border-box
,边距空间始终会添加到你的 height
声明中。h1
周围添加空间,请改用 padding 而非 margin,并使用 box-sizing: border-box
。以下是一些实施选项:https://css-tricks.com/box-sizing/。*
{
margin:0px auto;
}
html, body {
margin: 0 ;
padding: 0;
height: 100%;
}
header {
height:10%;
}
section {
height:90%;
}
<header>
<h1>
Hello
</h1>
</header>
<section>
test
</section>
只需添加通用选择器并将边距设置为 *{margin:0px auto;}
。希望它能起作用。
*{margin:0px auto}
和auto
来让浏览器计算边距是一个很好的习惯。 - Sampad*
使用了 流下 技术,无论你在这里定义什么都会被继承。 - Sampad要消除这种额外的边距和填充,建议将所有元素的边距和填充重置为0。
可以通过以下方式实现:
* {
margin: 0;
padding: 0;
}
* {
margin: 0;
padding: 0;
}
html, body {
height: 100%;
}
header {
height:10%;
}
section {
<header>
<h1>
Hello
</h1>
</header>
<section>
test
</section>
margin-bottom
,因为在许多(大多数?)情况下,h1
下面会有其他元素。我假设问题提供了一个高度简化的示例。在实际使用中,margin-bottom
可能会产生影响。但是我同意在这种情况下只有margin-top
有影响。 - Michael Benjaminh1{ display: inline-block }
或类似的方法来防止边距折叠。 - Oriolh1
和header
的上边距会发生折叠。因此,它们的行为就像h1
没有上边距,而header
的上边距等于其自身上边距(0)和h1
上边距中的最大值。 - Oriol