【发布时间】:2012-10-11 18:08:47
【问题描述】:
我希望我的网页只能垂直滚动。所以我将overflow-x:hidden; 设置为我的.page-wrapper。我的.page-wrapper 将两个绝对定位的图层叠加在一起。单击按钮时,顶层会滑动到一侧(如 position:absolute; 所述),并使网站实际上比 100% 视口宽度更宽 - 所以它可以水平滚动。
为了防止水平滚动,我将overflow-x:hidden 设置为我的.page-wrapper。
如果我这样做,我的正常内容的垂直滚动确实有问题并且无法正常工作。
有什么办法解决这个问题吗?
更新
-webkit-overflow-scrolling: touch; 似乎工作正常,只要没有 javascript 改变任何高度。请参阅以下示例。我在这里所做的是将主体的高度更新为第二层的内容高度 - 因此,一旦上层向左滑动,就没有空的滚动空间。将上层向后滑动时,我从主体中删除了属性style(设置高度)。这样做之后,滚动再次波涛汹涌。
function showInfos(show) {
if ( show ) {
$('#videos').addClass('slid');
$('body').height($('#infos > .content').height());
$('#page-wrap').addClass('no-overflow');
} else if ( !show ) {
$('#videos').removeClass('slid');
$('#page-wrap').removeClass('no-overflow');
$('body').removeAttr('style');
}
}
【问题讨论】:
-
将高度设置为 100%。然后你可以将溢出设置为自动
-
我已经将我的身体和元素的高度设置为
100%,但这不是我的意思。页面仍然比视口宽,因此它也可以自动水平滚动。我只是不希望这种情况发生。我不希望我的网站上有任何水平滚动(因为我正在通过 javascript 进行滑动和其他手势)。这就是为什么我认为我可以简单地设置overflox-x:hidden这样这个问题就可以解决了——而且确实如此——但是下一个问题就是垂直滚动不连贯。 -
此外,我刚刚对此进行了测试,甚至
overlow:auto也使滚动不稳定——在本例中为 x 方向和 y 方向。