使外部div自动与其浮动内容相同的高度
我想要外部div
,这是黑色的包装它的div
浮动在其中。 我不想在div
使用style='height: 200px
与outerdiv
id,因为我想它是自动内容的高度(例如,浮动div
)。
<div id='outerdiv' style='border: 1px solid black;background-color: black;'> <div style='width=300px;border: red 1px dashed;float: left;'> <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p> </div> <div style='width=300px;border: red 1px dashed;float: right;'> <p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p> </div>
如何做到这一点?
你可以设置这个outerdiv
的CSS
#outerdiv { overflow: hidden; /* make sure this doesn't cause unexpected behaviour */ }
你也可以通过在最后添加一个元素来clear: both
。 这可以正常添加,与JS(不是一个好的解决scheme),或者:after
CSS伪元素(旧IE不广泛支持)之后。
问题是容器不会自然地扩展到包含浮动的孩子。 在使用第一个例子时要注意,如果父元素之外有任何子元素,它们将被隐藏。 你也可以使用“auto”作为属性值,但是如果任何元素出现在外面,这将会调用滚动条。
你也可以尝试漂浮父容器,但根据你的devise,这可能是不可能的或困难的。
首先,我强烈build议你在外部CSS文件中做CSS样式,而不是内联。 维护起来要容易得多,而且使用类可以更加可重用。
通过Alex的回答(&Garret的clearfix)“在最后添加一个元素来清除:both”,你可以这样做:
<div id='outerdiv' style='border: 1px solid black; background-color: black;'> <div style='width: 300px; border: red 1px dashed; float: left;'> <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p> </div> <div style='width: 300px; border: red 1px dashed; float: right;'> <p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p> </div> <div style='clear:both;'></div> </div>
这工作(但你可以看到内联CSS是不是很漂亮)。
您可能想尝试自动closures花车,详见http://www.sitepoint.com/simple-clearing-of-floats/
所以也许尝试overflow: auto
(通常工作),或overflow: hidden
,如亚历克斯说。
我知道有些人会讨厌我,但我发现display:table-cell
来帮助在这种情况下。
它真的很干净。
首先你不要使用width=300px
,这是标签不属于CSS的属性设置,请使用width: 300px;
代替。
我会build议在clearfix
上应用clearfix
技术。 Clearfix是一个通用的解决scheme来清除2浮动div,所以父div将扩大,以适应2浮动div。
<div id='outerdiv' class='clearfix' style='width:600px; background-color: black;'> <div style='width:300px; float: left;'> <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p> </div> <div style='width:300px; float: left;'> <p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p> </div> </div>
这是您的情况的一个例子 ,以及Clearfix如何解决这个问题。
使用jQuery:
设置家长高度=儿童offsetHeight。
$(document).ready(function() { $(parent).css("height", $(child).attr("offsetHeight")); }
使用clear: both;
我花了一个多星期试图弄清楚这一点!