首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS 5固定定位和虚拟键盘

iOS 5固定定位和虚拟键盘
EN

Stack Overflow用户
提问于 2011-11-02 01:32:37
回答 21查看 68.3K关注 0票数 138

我有一个移动网站,其中有一个div固定在屏幕底部通过位置:固定。在iOS 5(我在iPod Touch上测试)中一切正常,直到我在一个带有表单的页面上。当我点击输入字段,出现虚拟键盘时,div的固定位置突然丢失了。现在,只要键盘可见,div就会随页面一起滚动。单击完成关闭键盘后,div将恢复到屏幕底部的位置,并遵循位置:固定规则。

还有其他人经历过这种行为吗?这是意料之中的吗?谢谢。

EN

回答 21

Stack Overflow用户

发布于 2013-03-21 09:23:52

我在应用程序中遇到了这个问题。以下是我如何解决它的方法:

input.on('focus', function(){
    header.css({position:'absolute'});
});
input.on('blur', function(){
    header.css({position:'fixed'});
});

我只是滚动到顶部并将其放置在那里,这样iOS用户就不会注意到任何奇怪的事情。将其封装在一些用户代理检测中,这样其他用户就不会得到这种行为。

票数 49
EN

Stack Overflow用户

发布于 2012-09-28 05:35:38

我在ipad上遇到了一个稍有不同的问题,虚拟键盘将我的视窗推到了屏幕外。然后,在用户关闭虚拟键盘后,我的视区仍然不在屏幕上。在我的例子中,我做了类似以下的事情:

var el = document.getElementById('someInputElement');
function blurInput() {
    window.scrollTo(0, 0);
}
el.addEventListener('blur', blurInput, false);
票数 16
EN

Stack Overflow用户

发布于 2013-02-05 19:14:54

这是我们用来解决ipad问题的代码。它基本上是检测偏移和滚动位置之间的差异--这意味着'fixed‘不能正常工作。

$(window).bind('scroll', function () {
    var $nav = $(".navbar")
    var scrollTop = $(window).scrollTop();
    var offsetTop = $nav.offset().top;

    if (Math.abs(scrollTop - offsetTop) > 1) {
        $nav.css('position', 'absolute');
        setTimeout(function(){
            $nav.css('position', 'fixed');
        }, 1);
    }
});
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7970389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档