我有一个高度由封装的 div 决定的 div。问题是,当我在顶部添加一些额外的边距时,encolsing div 会正确调整大小。当我在底部添加边距时,似乎只有封闭的 div 框模型受到影响,而封闭的 div 则不受影响。
HTML
<div style="height:100px;background-color:#adadbb">
IRRELEVANT THINGS HERE
</div>
<div class="dynamicDiv">
<span> title</span>
<div class="card">
Content here
</div>
</div>
<div style="height:100px;background-color:#adadbb">
IRRELEVANT THINGS HERE VOL 2
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.dynamicDiv{
background-color:yellow;
}
.card{
height:15vh; //an example of the height for this card. could be anything.
margin-top:10px;
margin-bottom:10px;
}
Run Code Online (Sandbox Code Playgroud)
看起来这与<span> title</span>元素有关,好像我在底部添加一个元素,就像我期望的那样工作(除非跨度为空,在这种情况下,事情呈现为好像跨度不存在一样)。
我不太明白为什么会发生这种情况,所以如果它与盒子模型有明显的关系,请告诉我。非常感谢。
在这里小提琴:
https://jsfiddle.net/d88yr4yw/
PS:我试图实现的是有一个始终与封闭的 div 高度一样高的 div + 顶部和底部边距 + 那里可能存在的任何其他元素。如果不是不可能解决这个问题,我宁愿我不必硬编码任何高度。
一个快速的解决方法是在外部 div 上使用:
overflow:auto,
Run Code Online (Sandbox Code Playgroud)
或者
padding-top:1px; margin-top:-1px;
Run Code Online (Sandbox Code Playgroud)
margin 在内部 div 上的工作方式是违反直觉的。比我更聪明的人在这里讨论了它:
如果您阅读该链接上的评论,您会发现很多人对这个奇怪的“规则”也不是特别满意!
我使用溢出:自动技术对小提琴进行了更改(删除了顶部的跨度,并且边距仍然保留):
https://jsfiddle.net/ps9na82r/