繁体   English   中英

在聚焦输入时,在iOS(和所有移动设备)上自定义滚动

[英]Custom scrolling on iOS (and all mobile devices) when input is focused

问题:

当选择输入时,我希望屏幕滚动,以便聚焦输入正好在屏幕顶部。

我希望这适用于iOS和所有其他移动设备。


这是目前在iOS上发生的事情:

在此输入图像描述


这就是我想要发生的事情......请注意页面滚动到的位置:

在此输入图像描述


我目前正在尝试的代码是:

$('#input').on('focus focusin', function(e) {
    e.preventDefault();
    $('html').animate({
        scrollTop: $('#anchor').offset().top
    }, 300);
})

这段代码在桌面上工作得很好,但是一旦我在iPhone上加载页面,它就会完全停止工作,并且默认的滚动行为会在第一个gif中看到。

所以你只需要它滚动所以输入的顶部成为屏幕的顶部?

我在输入上方添加了2个像素的间隙,这样您就可以看到输入顶部的边框了。

$('#input').on('focus', function(e) {
    e.preventDefault();
    $('html, body').animate({
        scrollTop: $(this).offset().top-2;
    }, 1000);
})

终于搞清楚了问题!

经过数小时和数小时的捣乱,我发现问题不在于代码。 我的问题中显示的代码完美无缺。

问题恰好是我的本地测试环境 (命令提示符下的python manage.py runserver 0.0.0.0:8000 )。

我还没有找到原因。 但我确定我在生产和本地测试环境中使用Django 1.11.4和jQuery 3.1.1。 那么为什么会出现这个问题超出了我的想象。


我最好的猜测是jQuery和Django的本地测试服务器之间存在一些不兼容性。 🤷

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM