iOS8 Safari -webkit-overflow-scrolling:touch; 问题

Kri*_*wer 10 html css ios

因此,我们正在为一个在Safari中的iOS7上完美运行的客户端构建这个Web应用程序.但是当我们在iOS8中检查应用程序时,它有一些巨大的错误.

  • 如果用户打开侧边栏并关闭它,则<section style="overlay-y: scroll;"></section>消失的内容(重叠部分).
  • 有些按钮因任何原因停止工作.(<a href="">Lala</a>)

当我们-webkit-overflow-scrolling: touch;从容器中移除(包含所有内容的div)时,一切都像以前一样完美无瑕......

关于它可能是什么的任何想法?

Ale*_*lex 16

我有同样的问题!到目前为止,我找不到真正的解决方案,但有一个不太理想的解决方法:

假设#container具有-webkit-overflow-scrolling: touch属性集,这个jQuery应该帮助你:

$('#container').css('-webkit-overflow-scrolling','auto');
Run Code Online (Sandbox Code Playgroud)

或者对于javascript(未经测试):

document.getElementById('container').style.webkitOverflowScrolling = 'auto';
Run Code Online (Sandbox Code Playgroud)

这将禁用页面上流畅的轮盘式滚动.所以它并不理想,但您的页面现在应该正确滚动.

编辑:

一些进一步的研究使我们发现了一种更加黑客的解决方法,同时保持平滑的触摸滚动工作.假设你-webkit-overflow-scrolling: touch在css的某个地方,你可以在你的JS中"切换"它.我不确定你有什么显示/隐藏菜单,但希望你可以利用它.

function toggleMenu(){
    $('#container').css('-webkit-overflow-scrolling','auto');

    //...Existing code

    setTimeout(function() {
        $('#container').css('-webkit-overflow-scrolling','touch');
    },500);
}
Run Code Online (Sandbox Code Playgroud)

没有setTimeout,这对我没用.希望这可以帮助你或其他人.