当overflow-x被隐藏时,是否可以防止水平滚动?

时间:2010-04-15 19:58:04

标签: javascript css overflow hidden

我的网页内容超出了浏览器窗口的右边缘。我在overflow-x: hidden设置<body>以关闭底部滚动条,但我仍然可以使用触控板水平滚动,这不是我想要的。

有没有办法阻止浏览器水平滚动?

作为旁注:Safari 4.0.4有时仅水平滚动,滚动感觉“粘性”和“跳跃”,而Firefox总是平滑地水平滚动。

6 个答案:

答案 0 :(得分:3)

我认为真正的问题是,为什么你的内容超出了预期的页面大小?这个内容是否是您不希望用户真正看到的内容?在这种情况下,将它放在某处的div中并将其显示为none。这样可以完全避免溢出问题。

如果存在合法的原因,您希望它溢出容器,则显式设置容器的大小,然后将overflow-x隐藏。我没有测试过,但这应该可以防止当前的行为。如果没有,请尝试使用div而不是body标签。浏览器可能会表现得很奇怪,因为它正在处理身体标签本身。

答案 1 :(得分:2)

你可以尝试在CSS中设置:

html{
  overflow-x: hidden;
}

而不是使用body选择器。 我尝试过并在firefox中运行。

答案 2 :(得分:1)

如果所有其他方法都失败了,您可以使用Javascript不断强制浏览器使用window.scrollTo(xpos,ypos)向左滚动。对于xpos,你会想要使用0和ypos,你想要获得用户当前的滚动位置,假设你想允许垂直滚动。

您可以将函数调用放在window.onscroll事件处理程序中,也可以放在每100毫秒左右运行的javascript间隔中。由你决定。如果您需要代码示例,请询问。

答案 3 :(得分:1)

我会进入Chrome并在桌面上打开开发人员工具。删除overflow-x属性。然后继续删除页面上的每个父元素。当您看到水平滚动条消失时,您知道您已找到问题所在。然后深入了解那个元素。我敢打赌,你有100%的宽度,而且还有一个保证金。如果是这种情况,请删除保证金。

答案 4 :(得分:0)

如果你有一个例子,这将更好理解。

这是一个很长的网址还是没有空格的东西?你有white-space:nowrap;设置元素吗?

如果您有一个具有已定义大小的容器(一个适合视口的容器),则文本应该正确粘贴(除非它是一个没有空格的长行)

答案 5 :(得分:0)

旧的讨论,但它可能对寻找正确答案的人有用!

在比浏览器窗口更宽的元素的父div上设置“overflow:hidden”(不像正常情况那样是html或正文),这将使用de pad或箭头键停止滚动...