DIV内具有边距的子元素
我需要两个连续的div
(具有背景)无缝接触,一个在另一个之下。但是,当我将子元素p
元素放入底部div
时,此布局会中断。 p
元素的边距在两个div
之间强制空白。这是奇怪的行为,因为我期待p
的边距保持在div
的内容和背景区域内。它在Firefox,Chrome和IE 8上呈现相同的方式。DIV内具有边距的子元素
<div style="background: #ccccff">Top Div</div>
<div style="background: #ffcccc"><p>Bottom Div</p></div>
下面是它的样子。
我可以通过改变边距内边距为p
元素解决这个问题,但我也有头元素,列表元素,我想在使用任何其他元素来做到这一点开始div
。这是不可取的。
有人能够启发我:我错过了什么样的盒子模型?有没有简单的方法来解决这个问题,最好是通过修改div
的风格?
这是expected behavior *。有几种方法可以避开它。如果浮动div,它们将包含子元素的边距并防止边缘塌陷。另一种方法是向div添加边框或填充。
* div和p“的边距组合形成单个边距”,即使它们是嵌套的,因为它们具有相邻的边距而没有填充或边界。
设置了积极的填充,和div
元件上的相应的负利润率似乎解决这个问题,但我不知道为什么。
<div style="background: #ccccff">Top Div</div>
<div style="background: #ffcccc; padding: 1px; margin: -1px"><p>Bottom Div</p></div>
解决方案1
添加溢出:隐藏/汽车到包含div防止保证金崩溃。
溶液2
到内含div和等于负余量积极添加填充到内部元件
新解法
的0.01px添加填充到内含div,这将防止边缘崩溃,但不会在内部元素上需要任何负边界。
在Chrome上0.01px的工作对我来说是最重要的,但是0.1px却能工作。我可以看到这个解决方案对使用溢出的吸引力,但是有没有人通过浏览器进行过广泛的测试? – Evans 2014-03-24 15:57:16
适用于Chrome浏览器:padding-top:0.02px; – 2015-08-13 15:09:42
是,看起来像是倒塌的边框,但我仍然觉得它有点奇怪,谢谢你的提醒 – myffical 2009-12-10 06:43:03
浏览器中的预期行为是通常都是意料之外 – 2011-11-17 16:21:10