当页面准备好时,我有一些用CSS设置为绝对位置的div,并相对于另一个固定的div进行定位,这方面运行良好。然而,在页面加载和设置完毕之前,如果调整页面大小,这些绝对定位的div不会跟随变化,移动到其他位置,我认为它们是相对于屏幕顶部和左侧给出的值。
用来定位绝对div的相对div的位置也可能发生变化,相对于其上方的div。
是否有任何方法监听浏览器的宽度/高度变化,以使这些div保持正确的位置?
当页面准备好时,我有一些用CSS设置为绝对位置的div,并相对于另一个固定的div进行定位,这方面运行良好。然而,在页面加载和设置完毕之前,如果调整页面大小,这些绝对定位的div不会跟随变化,移动到其他位置,我认为它们是相对于屏幕顶部和左侧给出的值。
用来定位绝对div的相对div的位置也可能发生变化,相对于其上方的div。
是否有任何方法监听浏览器的宽度/高度变化,以使这些div保持正确的位置?
首先,您需要将窗口调整大小事件绑定到您选择的函数。
$(window).on("resize", methodToFixLayout);
现在,您可以确定新的高度和宽度,并从那里进行页面调整。
function methodToFixLayout( e ) {
var winHeight = $(window).height();
var winWidth = $(window).width();
//adjust elements css etc.....
//$("#someDiv").css('someProperty',someValue based on winHeight and winWidth);
}
没有更多关于你的布局的具体信息,很难确定你需要做出哪些更改,但这应该可以让你朝着正确的方向前进。
bind
更新为 on
,因为我们现在使用的是 on
。 - Emilio Gort如果您只需要将元素相对于另一个元素而不是整个文档进行定位,则可能无需使用JavaScript。您可以使用"position:relative":
<div id="myContainer" style="position:relative">
<div id="myElement" style="position:absolute;left:100px;"></div>
</div>
position:relative
,所以myElement将被定位为绝对位置,但相对于myContainer而不是整个文档。有了这个,您可以构建相当复杂但健壮的位置,这些位置将与浏览器大小无关。还有一个来自jqui网站的插件。
http://www.jqui.net/jquery-projects/jquery-mutate-official/
这里有演示:http://www.jqui.net/demo/mutate/
希望这能帮助到您。