h5頁面,手機彈出軟鍵盤影響頁面布局


描述下我遇到的問題,需要在頁面彈出框中,輸入信息,灰色透明背景層fixed定位,顯示框框absolute,為直觀起見,設置bottom:0,放在最底下,需要彈出框是,頁面已經有滾動條;如下:

 

效果還是很完美的,不過當input聚焦時,彈出鍵盤,然后再收起鍵盤,再點擊input,事件就失效了,為什么呢,然后發現,軟鍵盤收起時,彈框也相應的被頂上去,說明頁面整體就上移了,如下:

可是當鍵盤收起時,頁面卻被撐開了,彈框也掉下來了,這時,再點擊頁面這個input,已經沒有任何反應了,除非滑動頁面,讓屏幕下來,恢復原來的文檔高度,才起作用,實際上,此時,彈框定位還在原來的位置,即上面的地方,只是看不見,下面的內容是假的。

所以,解決思路,當軟鍵盤收起時,讓頁面回到初始的狀態,即沒有鍵盤時,文檔的位置,用scrollTop

至此:解決,希望對遇到同樣問題的同學有幫助

 

完整html代碼:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"/>
<title>測試頁面</title>
</head>
<style>
body,html{width:100%;height:100%;margin:0;padding:0}
.wrap{width:100%;height:100%;display:none;position: fixed;left:0;top:0;background-color:rgba(0,0,0,0.5)}
.inbox{position: absolute;width: 200px;height:100px;border:1px solid #fff;background-color:#fff;left:22%; bottom:0px; }
</style>
<body>
<p>jskjfd第三方可是吃考慮過</p>
<p>頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p><p>都誰收拾所所所所所所所多</p><p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p><p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<p>都誰收拾所所所所所所所多</p>
<button onclick = "show()">show</button>
 
<div class ="wrap">
<div class="inbox">
用戶名:<input type="text" id = "ff"><br>
<label for="ff">就多加點</label>
<span id="span"></span>
</div>
</div>
 
 
</body>
<script type="text/javascript" src="resources/js/jquery-1.11.0.min.js"></script>
<script>
//初始彈出鍵盤時,頁面的滾動高度;沒有滾動條,則為0;
var initScrollTop;
//顯示彈出框
function show(){
initScrollTop = document.body.scrollTop;
$('.wrap').show();
}
$(function(){
//失去焦點,即收起鍵盤時
$("#ff").blur(function(){
$(window).scrollTop(initScrollTop);//讓頁面回到初始的滾動距離
});
})
</script>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM