在做移動端的時候,很多底部固定的導航欄,目的是想讓導航欄一直固定到底部,不隨輸入鍵盤的出現而移動。在蘋果手機上沒事,但在安卓手機上彈出的鍵盤會將按鈕頂起來。事實是這樣的:一個頁面有input的時候,然后聚焦input的時候,輸入鍵盤就出現了,原本固定在底部的導航欄也不是在最底部固定着了,而是在鍵盤上部。最初的解決方法是以為用input聚焦的時候,就把固定導航欄隱藏掉,失去焦點的時候就把固定導航欄顯示。可是事實又告訴我 ,失敗了。有些手機可能行,但是有些手機,鍵盤可以隱藏,但是不可以失去焦點。所以就想到了另一個方法,也就是可行的方法:
鍵盤彈出,改變了窗口的大小;
//大概的HTML代碼 <body> <section class="section1"> <form> <input type="text" placeholder="請輸入醫生、或者門店關鍵字" class="keyName" id="serachData"> </form> <img src="./images/Search.png" alt=""> </section> <section class="section3"> <div class="more"> <div class="moreBtn">更多</div> <div class="myApoint"><a href="我的預約.html">我的預約</a></div> </div> <div class="loadMore">加載更多</div> </section> </body>
//jQuery代碼
//讓固定定位始終定在手機的同一個位置
//先定義一個變量,當改變窗口大小的時候用來做判斷
var flagKey=false;
$(".keyName").on("focus",function () {
flagKey=true;
})
window.onresize =function(){
if(flagKey){
$(".more").css("position","initial");
flagKey=false;
}else{
$(".more").css("position","fixed");
if(document.activeElement.id =="serachData"){
flagKey = true;
}
}
};
