Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CSS-Android键盘上推元素_Javascript_Css_Position_Cross Platform - Fatal编程技术网

Javascript CSS-Android键盘上推元素

Javascript CSS-Android键盘上推元素,javascript,css,position,cross-platform,Javascript,Css,Position,Cross Platform,我有一个div和位置:relative。在这个div中还有另一个div的位置:绝对 我还将屏幕限制为800*600px。当我在Android操作系统上打开我的网页时(在那里尝试了Chrome浏览器),似乎每当键盘弹出时,它就会推送整个视图 所以我的问题是,有没有办法控制它?据我所知,似乎JavaScript或jQuery无法控制,CSS仍然99%确定没有。那么,我说得对吗?我认为你不能阻止键盘向上推视图。通常,浏览器会降低窗口的高度,导致某些图元被推到视图之外。它这样做是为了尝试在视图中获得聚焦

我有一个
div
位置:relative
。在这个
div
中还有另一个
div
位置:绝对

我还将屏幕限制为800*600px。当我在Android操作系统上打开我的网页时(在那里尝试了Chrome浏览器),似乎每当键盘弹出时,它就会推送整个视图


所以我的问题是,有没有办法控制它?据我所知,似乎JavaScript或jQuery无法控制,CSS仍然99%确定没有。那么,我说得对吗?

我认为你不能阻止键盘向上推视图。通常,浏览器会降低窗口的高度,导致某些图元被推到视图之外。它这样做是为了尝试在视图中获得聚焦的文本字段,而不是隐藏在键盘后面

通过使用javascript将处理程序附加到文本输入或textarea focus事件,我解决了这个问题。然后我将主体的scrollTop值更改为0,然后将元素滚动回视图

以下是用AngularJS实现的解决方案

element.focus(function() { //focus event handler

                $timeout( function(){

                    angular.element(document.querySelectorAll("body")).scrollTop( 0 ); //scroll body back

                    },1000);

                });     

需要稍微延迟,因为在字段聚焦后,键盘需要时间弹出。

隐藏手机中的div,使用

@media screen and (max-height: 480px){
    div{
        display: none;
    }
}
因此,只要键盘处于活动状态,该特定元素就不会出现