【发布时间】:2026-02-14 13:30:01
【问题描述】:
问题:
选择输入时,我希望屏幕滚动,使聚焦输入位于屏幕顶部。
我希望它可以在 iOS 和所有其他移动设备上运行。
这就是目前 iOS 上发生的情况:
这就是我想要发生的事情...注意页面滚动到的位置:
我目前正在尝试的代码是:
$('#input').on('focus focusin', function(e) {
e.preventDefault();
$('html').animate({
scrollTop: $('#anchor').offset().top
}, 300);
})
这段代码在桌面上运行良好,但当我在 iPhone 上加载页面时,它就完全停止工作,并且默认滚动行为接管 - 如第一个 gif 所示。
【问题讨论】:
-
你能用
body代替html吗?喜欢这个$('body').animate({... -
@JohnR 试过了,当使用
body代替html时根本不起作用 -
你可以试试这个解决方案:*.com/a/9298941/1736186当然把0改成
offset().top。在第二个答案中,我可以看到e.preventDefault()自从 IOS 8 以来就不起作用了。还有一个我想到的黑客,但它有点难看。使用setTimeout()约 300 毫秒(?)延迟来检查window.scrollTop()是否等于您想要的。否则重复滚动动画。仅当这是触摸设备时才检查:*.com/a/4819886/1736186 -
问题是试图改变默认滚动行为
-
你可以尝试使用位置而不是偏移量吗?
标签: javascript android jquery ios