overflow-x:hidden;在Chrome&火狐

时间:2014-04-10 19:39:33

标签: html css google-chrome firefox browser

我遇到了overflow-x:hidden的问题。我意识到有很多关于这个主题的帖子,但是没有一个帖子能够特别解决我的问题,并且已经发布的问题中的解决方案都没有奏效。所以,我发布了另一个“溢出:隐藏;”问题......

我有一个全宽(固定)导航栏,以及页面顶部的全屏幻灯片。其余的内容以非常直接的方式(或者我认为)。页面上的其他位置有固定元素,我将主体设置为overflow-x:hidden;以防止页面调整大小时出现重叠。

问题是,在Chrome和Firefox中,我仍然可以使用触控板滚动L和R.不好。

我重建了我的页面,以及花费大量时间使用开发人员工具,隐藏,删除和更改各种元素的位置。我已尝试将overflow-x:hidden;添加到.wrapper;这工作正常,但仍然允许一些横向滚动。我还尝试设置scrollLeft(0),正如本文here中所建议的那样。我无法弄清楚:

A)为什么overflow-x不起作用,

B)我的内容来自哪里(一目了然,使用开发工具,一切看起来都很好)。

由于我不确定是什么导致了这个问题,我不能包含一个整洁的JSFiddle代码段。完整(静态)站点在这里:[已编辑,不再需要]

3 个答案:

答案 0 :(得分:1)

这不是最具吸引力的选项,但如果overflow-x: hidden;不起作用,那么在您解决实际问题时可能会进行临时修复:

http://jsfiddle.net/YWnpM/

$(window).on('scroll', function() { $(this).scrollLeft(0); //sets left scroll to 0px });

(我看到你说你尝试了这个,但这取决于你是如何实现的 - 如果你在事件处理程序之外这样做了,那么它就不会有用。)

答案 1 :(得分:1)

您必须使用boxmodel重建页面,使用css类或库来实现良好的网格系统。固定元素永远不是一个好选择。根据css中媒体查询的最小宽度和最大宽度,可以根据移动使用情况自定义提到的boxmodel网格。

答案 2 :(得分:0)

我会在尝试防止过度滚动时扩展@ advert2013的答案:

$(window).scroll(function (e) {
    var $target = $(e.target);
    if ($target.scrollLeft() != 0) {
        $target.scrollLeft(0);
    }
});