[英]css transition width and height to 0 on absolute div doesn't work
我的目的是将div转换为宽度和高度0,从而逐渐使其对用户不可见。 我有以下绝对定位的div:
<div id="main" style="width: 200px; height: 100px; left: 648px; top: 253px; z-index: 19200;position: absolute !important;" tabindex="-1"><div width: 200px;height: 150px;"><div style="width:150px;height:100px;border:1px solid black">hello<div style="width:50px;height:50px">close</div></div><div id="ext-comp-1060-clearEl" class="x-clear" role="presentation"></div></div></div>
当用户按下close div时,我将以下css类附加到“ main” div:
.collapseRecommendation {
-webkit-transition: all 1.0s ease-in-out;
-moz-transition: all 1.0s ease-in-out;
-o-transition: all 1.0s ease-in-out;
transition: all 1.0s ease-in-out;
}
并在javascript(extjs)代码中将div的宽度和高度设置为0:
mainDiv.setStyle('width', '0px');
mainDiv.setStyle('height', '0px');
并且我还设置了“ main” div的左和顶部位置,这确实按预期工作。
但是,只有“主” div的高度和宽度设置为0,但是内部的div大小不会改变,并且它保持在同一位置并且对用户可见,因此在转换之后,我具有以下内容:
<div id="main" style="width: 0px; height: 0px; left: 348px; top: 153px; z-index: 19200;position: absolute !important;" tabindex="-1"><div width: 200px;height: 150px;"><div style="width:150px;height:100px;border:1px solid black">hello<div style="width:50px;height:50px">close</div></div><div id="ext-comp-1060-clearEl" class="x-clear" role="presentation"></div></div></div>
如您所见,内部div的尺寸仍为200x150。 尺寸也没有变大的原因可能是什么? 谢谢
我们不应该期望子div的大小发生变化,对吧?
当涉及到像div
的块元素时,它们的宽度仅取决于其父级的宽度,因为大多数浏览器将块元素视为具有width: 100%
将其设置为width: 100%
。 但是,当您显式设置样式时,此处理将被覆盖,并且它们的尺寸彼此完全独立。
这个JSFiddle显示了当您指定和不指定嵌套div
的宽度时嵌套div
的行为。 如果单击div,则会看到它们的大小已调整。 前div个独立调整大小; 底部div保持相同的宽度。 同样,这是因为未明确声明宽度。
解决方案是以编程方式更改每个子div的尺寸。 为此,您可以遍历子级并设置其所有尺寸。 该代码可能类似于:
var children = mainDiv.childNodes;
for( i = 0; i < children.length; i++ ) {
if ( children[i].nodeType == 1 ) {
// Do something with children[i]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.