我有一个聊天页面布局Web应用程序,其底部是输入,顶部是标题。当输入焦点对准时,页面将向上移动。
这些页眉出现在我的页面中,用于防止缩放或其他有害行为。
<meta name="viewport" content="width=device-width,initial-scale=1">
当尝试使用JavaScript使用window.innerHeight
调整窗口大小时,即使使用setTimeout()
也不可行
浏览器是否有一种解决方法,无法平移整个页面,或者不减去键盘高度来调整大小?
答案 0 :(得分:2)
从Safari 10开始,键盘高度不会影响window.innerHeight
。 Source:
显示键盘时,iOS 10上的Safari和WKWebView不会更新window.innerHeight属性。
您已经发现,这不仅使正确调整显示区域的元素大小变得非常困难,而且在打开键盘时没有resize
事件。
由于键盘将整个页面滑出了视口的顶部,因此您可以使用窗口的高度与页面的scrollTop
属性之间的差来计算显示高度。要检测键盘何时打开或关闭,请在输入中监听onfocus
和onblur
事件。
var myInput = document.getElementById( "your-input-field-id" );
var myContainer = document.getElementById( "your-container-id" );
myInput.addEventListener( 'onfocus', function() {
var displayHeight = window.innerHeight - myContainer.scrollTop;
myContainer.style.height = displayHeight + "px";
}, true );
myInput.addEventListener( 'onblur', function() {
myContainer.style.height = "100%";
}, true );
答案 1 :(得分:1)
克隆标题主要元素,并将其放在用户最关注输入的最简单答案的顶部。
$('#example').clone().addClass('cloned').prependTo('body');
但是,您必须为该元素添加唯一的类,并在该类的下面的css中给出
.cloned {
position:fixed;
left:0;
top:0;
z-index:'give highest z-index';
}
答案 2 :(得分:0)
您在另一个<div> root </div>
内尝试过<div> your_element </div>
答案 3 :(得分:0)
我建议您在标头上使用position:fixed; top:0;
而不创建克隆。