Javascript 浮动窗格不符合相对于父窗格的绝对位置
我希望这个浮动窗格最初位于距离父位置顶部40px的位置。当前结果(显示在JSFIDLE中)是Javascript 浮动窗格不符合相对于父窗格的绝对位置,javascript,dojo,Javascript,Dojo,我希望这个浮动窗格最初位于距离父位置顶部40px的位置。当前结果(显示在JSFIDLE中)是top:140px,而不是预期的top:40px <body class="tundra"> <div style="height:100px;background-color:blue;"></div> <div style="position:relative;"> <div style="background-co
top:140px
,而不是预期的top:40px
<body class="tundra">
<div style="height:100px;background-color:blue;"></div>
<div style="position:relative;">
<div style="background-color:red;" class="paneClass"></div>
<div id="simplepane1"></div>
</div>
</body>
require(["dojox/layout/FloatingPane", "dojo/domReady!"], function(FloatingPane) {
var floatingPane1 = new FloatingPane({
class: "paneClass"
}, document.getElementById("simplepane1"));
floatingPane1.startup();
});
.paneClass{
position:absolute;
top:40px;
left:40px;
width:200px;
height:300px;
}
require([“dojox/layout/FloatingPane”,“dojo/domReady!”],函数(FloatingPane){
var floatingPane1=新的FloatingPane({
类:“paneClass”
},document.getElementById(“simplepane1”);
floatingPane1.startup();
});
.paneClass{
位置:绝对位置;
顶部:40px;
左:40px;
宽度:200px;
高度:300px;
}
您可以看到红色的
div
相对于父级的位置如何正确,但浮动窗格不正确。浮动窗格的父级位置是从顶部向下100px(这100px是“tundra”类中第一个div的高度)。所以,当它收到增加40px的指令时,它会从顶部移动总计140px
按如下所示重写HTML代码将解决此问题。更改是将第一个div的位置设置为relative
<div style="height:100px;background-color:blue;position:relative;"></div>
<div style="background-color:red;" class="paneClass"></div>
<div id="simplepane1"></div>
浮动窗格的父级位置是从顶部向下100px(这100px是类“tundra”中第一个div的高度)。所以,当它收到增加40px的指令时,它会从顶部移动总计140px 按如下所示重写HTML代码将解决此问题。更改是将第一个div的位置设置为
relative
<div style="height:100px;background-color:blue;position:relative;"></div>
<div style="background-color:red;" class="paneClass"></div>
<div id="simplepane1"></div>
之所以会出现这种情况,是因为浮动窗格是作为绝对定位的元素构建的,并且其样式也要与之匹配。因此,当从相对框的顶部设置40px时,它实际上会基于其父对象添加100。根据您对此的操作,我建议不要将浮动窗格放在具有固有
top
值的div中。如果不希望浮动窗格与顶部栏重叠,可以将其约束在框内。(不是我的)就是这样一个例子
如果您不想关心这个问题,那么只需从包含div中删除
位置:relative
,并将浮动div的默认样式更改为top:140px代码>也会起作用。之所以会出现这种情况,是因为浮动窗格是作为绝对定位的元素构建的,并且它的样式也要与此匹配。因此,当从相对框的顶部设置40px时,它实际上会基于其父对象添加100。根据您对此的操作,我建议不要将浮动窗格放在具有固有top
值的div中。如果不希望浮动窗格与顶部栏重叠,可以将其约束在框内。(不是我的)就是这样一个例子
如果您不想关心这个问题,那么只需从包含div中删除位置:relative
,并将浮动div的默认样式更改为top:140px代码>也将起作用。看起来FloatingPane正在重新计算位置并向其添加100px。。。也许看看源代码能给我们一些启示?我现在正在研究。另一个有趣的是,最小化然后最大化浮动窗格似乎每次都会增加100px。看起来浮动窗格正在重新计算位置并向其添加100px。。。也许看看源代码能给我们一些启示?我现在正在研究。另一个有趣的是,最小化然后最大化浮动窗格似乎每次都会增加100px。我不知道这是如何解决问题的。现在连红色的div
都没有正确定位。我看不出这是如何解决问题的。现在,甚至红色的div
也没有正确定位。
.paneClass{
position:absolute;
top:140px;
left:40px;
width:200px;
height:300px;
}