2009-11-11 87 views
1

以此页为例,是否可以将一个孩子插入到mydiv中,这样会导致mydiv的高度超过500px?儿童是否可以在标准模式下影响其父母的身高?

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<body> 
    <div id="mydiv" style="width:500px;height:500px;border:4px solid red"> 
     <!-- place content here --> 
    </div> 
</body> 
</html> 

 

我找不到任何会。例如,下面的这种情况我告诉innerDiv高度为100%。它会发现它的父母是500px高,因此也是500px高。最终的结果是内容为800像素高,而内容流溢超越mydiv,与mydiv仍然坚定500px的身材:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<body> 
    <div id="mydiv" style="width:500px;height:500px;border:4px solid red"> 
     <img src="myimage.jpg" width="400" height="300" /> 
     <div style="width:100%;height:100%;background:yellow"> 
      hi 
     </div> 
    </div> 
</body> 
</html> 
 

IE怪癖运行模式将导致mydiv增长,以适应其子在许多情况下。看起来标准模式显然不会增长。情况总是如此吗?

我正在测试这主要在IE8和FF3.5在Windows上,IE8运行在所有可能的模式。

回答

3

否:在标准模式下,容器的默认overflow属性应设置为visible,这意味着溢出的内容将在容器的剪贴区域外呈现。没有这样的overflow选项来增加容器的尺寸以匹配它的孩子。你可以看到更多的溢出here

然而,有一些容器的增长方法来匹配其子的大小。在标准模式下,正确的做法是设置CSS属性min-height而不是属性height

由于高度执行行为不会在IE6发生,人们通常最终会同时设置min-height对符合标准的浏览器,然后或者设置为height IE只conditional comments或用下划线_前缀属性名所以IE6会使用它,但其他浏览器会忽略它。

所以你的DIV将类似于

<div id="mydiv" style="width:500px;min-height:500px;_height:500px;border:4px solid red"> 

你可以找到min-heighthere更多的信息和快速谷歌/ Bing搜索为min-height IE6会给你你需要的所有答案。

+0

也许我字面上解释了我的问题。在我的情况下,我实际上希望父div不要偏离500px。如果其子女加起来超过500px,我希望他们超出父母。标准模式浏览器似乎总是强制执行此操作。我很好奇,如果人们知道标准模式浏览器会导致父母成长为包含其子女,那么可能存在边缘情况。 如果我想要父母长大以适应其子女,这听起来像是最低高度是要走的路。 – 2009-11-11 01:04:08

+0

@Matt抱歉!我编辑了答案(添加了第1段)以更好地匹配问题:) – 2009-11-11 01:34:12