javascript - IOS 滚动问题( flex 滚动和反弹)

标签 javascript html ios css

我开发了一个具有固定页脚和页眉的网站。 内容也是固定的(但这只是因为页脚和页眉可以隐藏,但我不会在我的示例中显示)。 我遇到的问题是 iPhone 和 iPad。这是我遇到的两个问题。 一次它允许我将页眉和页脚拖过显示空白的 body/html 的范围(不知道他们为什么这样做),另一个问题是我一松开手指就停止滚动。 后者似乎可以通过这样做来解决:

overflow-x: hidden;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;

虽然我了解到这不是受支持的 CSS 属性,但它似乎确实可以解决问题。 我试图通过使 headerfooter 不可滚动来用 JavaScript 解决第二个问题,但它似乎无法正常工作。 JavaScript 非常简单:

function disableElasticScroll(e) {
    e.preventDefault();
};

我可以把它放在这样的元素上:

ontouchmove="disableElasticScroll(event)"

这没有达到预期的效果。 我已经设置了一个 codepen 来突出显示这个问题。如果你有ipad,看看吧。首先将内容拖到.content 区域内。这很好用(感谢 -webkit 解决方案)。如果您然后尝试拖动 .header.footer 您会注意到您无法拖动它并且没有滚动发生(同样这很好并且是由于JavaScript),但是如果您尝试再次滚动 .content,您会注意到它会拖拽整个页面并产生 flex 滚动效果。

https://codepen.io/r3plica/pen/LzRQaZ

最佳答案

有一种方法可以做到这一点,这样您就不必修复滚动容器。尝试将页眉和页脚定位在固定位置,然后用这些元素的高度填充页面主体。这样您的页面将正常滚动而不会出现任何问题。它可能看起来像这样:

body {
    padding-top: 60px;
    padding-bottom: 40px;
}
header.global {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 60px;
}
footer.global {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 40px;
}

关于javascript - IOS 滚动问题( flex 滚动和反弹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46369070/

相关文章:

javascript - IE cookie 怪癖

javascript - 在没有 $routeProvider 和 $location 的情况下使用 angularjs?

html - 为什么我的网格元素的高度计算不正确?

python - 站点包中模板中的 URL

ios - 在 Xcode UITest 中访问 app.buttons 而无需任何可用的文本供引用。

javascript - ng-expression 仅接受最大长度 10 的数字

javascript - 导航至 Bootstrap 步骤向导中的任何步骤

html - 如何在 Bootstrap 中更改导航栏的边框半径?

ios - 如何防止 UITextField 的自动更正气泡与 inputAccessoryView 重叠?

html - 如何检测 ios phonegap 开发中的选择框高度?