Css"对"减去没有延伸滚动区域的值?

时间:2014-09-18 22:04:08

标签: javascript html css

我希望有两个侧边栏对齐,其中一个是隐藏的。我希望当用户从右侧边栏单击一个按钮时,侧边栏应该消失到右侧,并且新的侧边栏应该与css动画师同时出现。

如果我使用right:-50px,则会扩展可滚动区域。如果我使用宽度的容器,这仍然可以扩展可滚动区域。

请参阅:http://jsfiddle.net/oz62o2yd/2/< - 这是正确的减值,来到屏幕区域。

http://jsfiddle.net/oz62o2yd/3< - 在这里我使用了一个容器,但这并不会阻止页面制作滚动条。

我不想只是“隐藏”滚动条但也禁用它们。

如果我需要使用javascript,我也可以。

2 个答案:

答案 0 :(得分:1)

由于基于流的布局的性质,浏览器的文档大小将始终按需要增加到右侧和底部。因此,在正确的边界之外呈现某些东西'确实会使滚动条向右移动。

根据您的具体情况,可能会有多种解决方案。最简单的方法是简单地禁止水平溢出:

body {
    overflow-x:hidden;
} 

实际上fix your fiddle。对于更复杂的情况,这可能是不够的。然后,您可以选择将有问题的元素包装在绝对定位的父级中,该父级保留在现有边界内并且本身具有有限的overflow设置。

答案 1 :(得分:0)

我用

修复了它
window.onscroll = function () { window.scrollTo(0, 0); };

事情是,我正在使用webgl / three.js和three.js,当全屏在某些(大多数)分辨率的屏幕底部有一个非常小的边框时。要修复那个边框,你必须显示:block,当你有display:block with other elements and tons of absolute absolutes,width:100%意味着canvas将进入“second page”

body标签和/或容器上的“overflow:hidden”适用于IE11,但由于结构复杂(非常复杂,顺便说一句),并且因为同一页面有jQuery UI,因此不适用于chrome / canary / nightly和熟悉的浏览器这也意味着如果我想在页面启动时显示一个对话框,“容器”将不包含所有元素作为jQuery UI在body标签中创建的元素,所以它也意味着我必须编辑jQuery(这是正常的)< / p>

上面的js标签在所有现代浏览器中都可以完美运行,但是在我没有定位的旧标签中非常活跃。