Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 当滚动条出现时,调整以保持水平元素位置_Javascript_Html_Css_Position_Scrollbar - Fatal编程技术网

Javascript 当滚动条出现时,调整以保持水平元素位置

Javascript 当滚动条出现时,调整以保持水平元素位置,javascript,html,css,position,scrollbar,Javascript,Html,Css,Position,Scrollbar,我的页面都使用典型的固定宽度页边距左右自动布局 .container{ width:900px; margin:0 auto; } 小问题来了。其中一些页面高于窗口,这意味着它们应该在右侧显示垂直滚动条。在这些页面和其他页面之间切换时,主容器将移动一点(v形滚动条的一半宽度)。我知道这是因为父元素(主体)的宽度改变了 但有人知道是否有图书馆或现有的黑客来抑制这种行为吗?(正文{overflow-y:scroll;}除外) 回复@Mateusz: 谢谢马图兹,好主意。我尝试了

我的页面都使用典型的固定宽度页边距左右自动布局

.container{
     width:900px;
     margin:0 auto;
}
小问题来了。其中一些页面高于窗口,这意味着它们应该在右侧显示垂直滚动条。在这些页面和其他页面之间切换时,主容器将移动一点(v形滚动条的一半宽度)。我知道这是因为父元素(主体)的宽度改变了

但有人知道是否有图书馆或现有的黑客来抑制这种行为吗?(正文{overflow-y:scroll;}除外)

回复@Mateusz:
谢谢马图兹,好主意。我尝试了以下代码

console.log($('body')[0].offsetHeight+' '+$('body')[0].scrollHeight+' '+$('html'[0].offsetHeight+' '+$('html')[0].scrollHeight);
测试结果如下:

           doc smaller than win              doc larger than win
firefox    1012 1012 1008 1362               1012 1012 1008 1007
chrome/ie  549 1525 545 545                    549 545 545 545

所以他们有不同的行为,比较的穿线鞋也不同(1和4)

您可以比较element.offsetHeight和element.scrollHeight。并根据这一点更改容器的位置。

据我所知,我已经体验到,这两个CSS属性停止滚动条显示的可能性为空。你的问题在别处。之后,您无法删除默认浏览器行为,但可以通过检测DOM的移动量并将其放回原处来相应地更新DOM。不知道有哪个图书馆提供这个,真是太酷了。但在这里,浏览器之间的流真的很糟糕。我最好把答案改成问题。