Html 小填充,大差异
如果我只在标题周围的div中添加1px填充,那么这显然会产生巨大的差异() html:Html 小填充,大差异,html,css,Html,Css,如果我只在标题周围的div中添加1px填充,那么这显然会产生巨大的差异() html: 为什么会这样?我真的很想实现与1px填充类似的效果,但不添加额外填充。将h1边距设置为0 h1 { margin: 0; } 这是由于 块的顶部和底部边距有时合并(折叠)为单个边距,其大小为合并到其中的边距中最大的边距,这种行为称为边距折叠 您还可以在上找到更多信息 两个边距是相邻的当且仅当[…]没有行框,没有间隙,没有填充和没有边框分隔它们[…] 因此,如果像在第二个示例中一样,在顶部应用填充(1
为什么会这样?我真的很想实现与1px填充类似的效果,但不添加额外填充。将
h1
边距设置为0
h1 {
margin: 0;
}
这是由于
块的顶部和底部边距有时合并(折叠)为单个边距,其大小为合并到其中的边距中最大的边距,这种行为称为边距折叠
您还可以在上找到更多信息
两个边距是相邻的当且仅当[…]没有行框,没有间隙,没有填充和没有边框分隔它们[…]
因此,如果像在第二个示例中一样,在顶部应用
填充(1px
)就足够了,那么边距将不再折叠。如前所述,一个简单的解决方案是删除标题元素的默认边距,改为应用填充。它现在将h1的边距保持在DIV内。h1的默认上下边距约为21px,因此当您向DIV添加1px填充时,它现在看起来像22px请查看更新的CSS
这与应用于Heading1元素的默认CSS有关。它已经应用了填充/边距
如果重置它,您可以看到您要查找的结果:
是块元素,这意味着它以换行符开始和结束。我认为这是造成您的问题的原因-您可能希望切换到
标记,尽管我不确定这是否能解决问题。您可以使用它重置所有CSS设置,包括此类问题。推荐用于任何站点。
CSS重置文件如何解决您的问题?正如您所看到的,在第一段中,h1被包括在内,并且给出了margin:0
,这是减少像您这样的问题的差异所必需的。感谢您回答为什么,而不仅仅是解决他的预期结果。您还可以通过将div
s显示为内联块来修复
并将其宽度设置为100%
。这就删除了边距折叠。作为旁注,您可以在第一个容器div中使用overflow:hidden(或auto)来执行oposite,也就是说,阻止边距折叠。Kay,我理解了解释。但我有点困惑,为什么这里这么多人建议使用边距:0
作为解决方案。然后第二个看起来就像第一个,但我希望它是另一种方式。我想解决办法是删除页边距
,并在标题中添加填充
上一页边距的大小。唯一的问题是,我想在浏览器中使用默认的边距规格,而在使用填充时,我无法做到这一点。为什么这里有这么多人建议使用边距:0:因为如果从标题中删除边距,就不能使两个边距折叠
.pad0 {
background-color: #E9E9E9;
padding: 0px;
}
.pad1 {
background-color: #E9E9E9;
padding: 1px;
}
h1 {
margin: 0;
}
.pad0 {
background-color: #E9E9E9;
padding: 0px;
margin: 0px;
}
.pad1 {
background-color: #E9E9E9;
padding: 1px;
margin: 0px;
}
h1
{
padding: 0px;
margin: 0px;
}
h1 { padding: 0; margin: 0; }
.pad0 {
background-color: #E9E9E9;
padding: 0px;
}
.pad1 {
background-color: #E9E9E9;
padding: 1px;
}