css的margin collapsing致使最上面会出現1个横条

日期:2020-12-12 类型:科技新闻 

关键词:制作小程序,小程序商城,扫码点餐小程序,微信小程序开店的步骤,牛刀小程序

近期在做web网页页面设计方案的情况下,莫名的发现最上面会出現1个横条,色调为html的情况色调。原意是那1片空横条应当为header的情况色。查了1些材料,发现是margin collapsing的难题,纪录下来,期待初学者少走弯路。

从难题说起
先得出demo的源代码和截屏,得出1个直观的印象。编码以下:

拷贝编码
编码以下:

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html {
width: 100%;
height: 100%;
max-height: 100%;
margin: 0px;
padding: 0px;
background-color: blue;
}
body {
width: 100%;
height: 100%;
max-height: 100%;
margin: 0px;
padding: 0px;
background-color: orange;
}
#header {
width: 100%;
height: 38%;
margin: 0px;
padding: 0px;
background-color: red;
}
#main {
width: 100%;
height: 62%;
margin: 0px;
padding: 0px;
background-color: green;
}
#container {
width: 80%;
max-width: 864px;
margin: 0px;
padding: 0px;
background-color: green;
}
#footer {
width: 100%;
height: 38%;
margin: 0;
padding: 0;
background-color: gray;
}
</style>
</head>
<body>
<div id="header">
<h1>Hello</h1>
</div>
<div id="main">
<div id="container">
</div>
</div>
<div id="footer">
</div>
</body>
</html>

截屏以下(留意最上面的蓝色横条,本想设计方案为鲜红色):
http://img.blog.csdn.net/205156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2lteWxyb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

难题的缘故

margin collapsing,界限合拼。h1默认设置margin-top值超过0,h1的top margin与header的top margin合拼,合拼以后的top margin又与body的top margin合拼,html是根元素,已不再次合拼,因此那个横条是body的margin,色调为html的情况色。
处理方法

处理方法的思路有两条。其1,除去margin,也便是把margin设定为0;其2是破坏margin collapsing。
margin设定为0

真的很简易,编码以下:

拷贝编码
编码以下:

h1{
margin-top: 0px;
}

破坏margin collapsing

这里的方式许多,要是是对于margin collapsing的标准,破坏在其中的某1个或好几个阶段。

设定父元素的overflow为auto或hidden,编码以下:

拷贝编码
编码以下:

#header {
width: 100%;
height: 38%;
margin: 0px;
padding: 0px;
background-color: red;
overflow: auto;
}

设为非负padding,编码以下:

拷贝编码
编码以下:

#header {
width: 100%;
height: 38%;
margin: 0px;
padding: 0px;
background-color: red;
padding-top: 0.1px;
}

设定border, 编码以下:

拷贝编码
编码以下:

#header {
width: 100%;
height: 38%;
margin: 0px;
padding: 0px;
background-color: red;
border:1px solid red;
}