具有异常行为的有效演示:http : //crawfordcomputing.com/AkadineWebOS/#/
如果抓住右边的div窗口边框并水平调整大小,则它会垂直移动。您可以使用图标打开的所有窗口都相同。一切都是可拖动的,Jetris可以工作。(查看信息链接)
这是一个Angular单页应用程序。我的div窗口已定义:
<div ng-repeat="pane in panes">
<div id="{{pane.windID}}" style="position: absolute; top: {{pane.x}}; left: {{pane.y}}; border: 2px solid black; min-height: 70; overflow: hidden">
<div style="padding:2px; overflow: auto; background-color: grey; border: 1px solid black">
<span style="float: left; text-align: left" ng-bind="pane.title"></span><span style="float: right; text-align: right" ng-click="closeWindow(pane.objID)">X</span>
</div>
<div compile="pane.content" style="background-color: white; padding: 5px; border: 1px solid black; overflow: auto;"></div>
</div>
</div>
因此,窗口div id =“ {{pane.windID}}”有两个子级,一个标题栏和一个内容窗格。因此,在调整窗口大小时,我尝试了asloResize内容窗格。这很奇怪,因为它没有说明标题栏。因此,我这样做:(如果未在函数中定义所有变量,则之前都已定义)
objParent.resizable({
handles: "n, e, s, w",
minWidth: 250,
minHeight: fullHeight,
//fullHeight is parents height, don't wanna colapse one liners
//titlebar (child0) resizes just fine due to floating
//child0 size bugs alsoResize child1, let's also it manually
resize: function (event, ui){
//subtact title height from parents height
contentHeight = objParent.innerHeight() - objChild[0].innerHeight();
//width is fine
contentWidth = objParent.innerWidth();
objChild[1].css({'width':contentWidth, 'height':contentHeight});
}
});
现在看到,调整大小时,我也只想调整内容窗格的大小,而不是标题栏的大小。因此,我尝试手动设置内容窗格的大小,宽度很好,但是内容窗格的高度等于父项高度减去标题栏的高度。
问题是,如果您首先水平调整大小,垂直行会变得不稳定。一旦抓住底部并垂直调整大小,该错误就会消失,然后可以重新调整大小,但是您希望完全没有问题。仅当您先水平调整大小时,才会发生这种情况。
为什么会这样?我怀疑该错误实际上在可拖动的调整大小函数中,因为您可以通过先垂直调整大小来停止该错误,然后再完美运行。这在所有浏览器上都会发生。
有人有线索吗?
ID为的divwindow100-obj951
最初没有设置CSS高度。所包含的divcompile="pane.content"
也没有。
垂直调整大小会同时更改这两个div的css height属性。
水平调整大小会同时更改两者的宽度,但只会更改所包含div的高度。
包含的div具有overflow:hidden
,因此,如果设置了其高度,则包含的div的高度并不重要。因此,使包含div的高度设置掩盖了这样一个事实,即所包含的div的高度实际上已更改为不稳定。
[使用Firebug并在调整大小时检查元素可以看到所有这些信息]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句