<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
p.neg{
margin-top: -50px;
margin-right: 10px;
margin-left: 10px;
margin-bottom: 0;
border: 3px solid gray;
}
</style>
<title>Title</title>
</head>
<body>
<div style="width: 420px;background-color: silver;padding: 10px;margin-top: 50px;border: 1px solid">
<p class="neg">A paragraph</p>A div
</div>
</body>
</html>
父元素div只剩下padding
原因是:所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。这个问题的避免方法很多,只要破坏它出现的条件就行。给 Outer Div 加上 padding/border,或者给 Outer Div / Inner Div 设置为 float/position:absolute(CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠)。
如何解决这个问题呢?方法有多个:
方法1:在父DIV的css加上“overflow:hidden;”。这种方法是目前来看最完美的解决办法。
方法2:在父DIV的css加上“border:1px solid transparent;”。
方法3:在父DIV的css加上float或者position:absolute。
方法4:在父DIV的css加上padding-top来代替margin实现效果。