Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery收听浏览器宽度/高度的更改_Javascript_Jquery_Resize_Height_Width - Fatal编程技术网

Javascript 使用jQuery收听浏览器宽度/高度的更改

Javascript 使用jQuery收听浏览器宽度/高度的更改,javascript,jquery,resize,height,width,Javascript,Jquery,Resize,Height,Width,我有一些div是在页面准备好时用position absolute(CSS)设置的,它们相对于另一个固定div进行定位,这很好。但是,在加载页面并设置所有内容之前,如果页面调整大小,则这些绝对div不会跟随更改移动到其他位置,我认为它们是相对于屏幕顶部和左侧的给定值 相对div的位置,我用来作为定位绝对div的起点,也可能改变相对div上面div的位置 有没有办法监听浏览器宽度/高度的变化,以使这些div保持在正确的位置?如果只需要相对于另一个元素而不是整个文档定位元素,则可能不需要使用Java

我有一些div是在页面准备好时用position absolute(CSS)设置的,它们相对于另一个固定div进行定位,这很好。但是,在加载页面并设置所有内容之前,如果页面调整大小,则这些绝对div不会跟随更改移动到其他位置,我认为它们是相对于屏幕顶部和左侧的给定值

相对div的位置,我用来作为定位绝对div的起点,也可能改变相对div上面div的位置


有没有办法监听浏览器宽度/高度的变化,以使这些div保持在正确的位置?

如果只需要相对于另一个元素而不是整个文档定位元素,则可能不需要使用JavaScript。您可以使用“位置:相对”:



由于myContainer具有
位置:相对
,myElement将绝对定位,但相对于myContainer,而不是相对于整个文档。有了这一点,您可以构建非常复杂但健壮的位置,这些位置与浏览器大小无关。

首先,您需要将窗口大小调整事件绑定到您选择的函数

$(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);
}

如果没有更多关于布局的细节,很难准确地说出您需要做哪些更改,但这应该会让您朝着正确的方向前进。

jqui网站上也有这个插件

以下是演示:


希望能有所帮助。

谢谢你的指点,我忘了说,当上面的div在页面加载后改变高度时,我用作绝对值“锚定”的元素的位置发生了变化。另外,页面本身在屏幕中央。谢谢!我成功地用resize事件进行了计算,代码行非常小,比我预期的要少很多@尤达:如果你想问一个问题,得到好的答案,并回答“我找到了一个更好的方法”,为什么不发布你的更好的方法,这就是这些网站的工作原理;)@Nik我使用了这个答案,只是根据我的条件对它进行了调整,所以问题的答案是这样的。我认为你应该更新
bind
to
on
on这是我们在这一次使用的,有办法使用JavaScript来听取更改,但是“position:fixed”并没有解决你的问题吗?不,没有,因为“位置:固定“跟随浏览器的滚动,松开与我需要的另一个div的相对位置。我认为,如果我们知道您真正想要的是什么,在没有javascript的情况下,这可能是可能的。我知道答案是可以接受的,但这个问题的纯css答案也会帮助其他人。如果你能展示你想要实现的HTML示例,这将是非常有帮助的。从您当前的问题来看,正如r-dub所提到的,这是不清楚的。我认为您实际上并不需要这样做,您需要知道的唯一一件事是,标记中有一个相对节点和一个绝对节点,它会根据相对节点的位置改变其在屏幕中的位置。现在没有任何标记,此问题大约在一年前发布。感谢链接,在不久的将来肯定会有帮助:)
function methodToFixLayout( e ) {
    var winHeight = $(window).height();
    var winWidth = $(window).width();
    //adjust elements css etc.....
    //$("#someDiv").css('someProperty',someValue based on winHeight and winWidth);
}