input獲取焦點(diǎn)時(shí)底部菜單被頂上來(lái)問(wèn)題的解決辦法
代碼如下所示:
<div class="search-box">
<input class="search-input" type="text" placeholder="請(qǐng)輸入名稱">
</div>
<!--底部-->
<div id="mini_nav" class="nav bt-nav">
<div>
<ul>
<li><a href="#"><span class="ico-home"></span>
主頁(yè)
</a>
</li>
<li><a class="selected-menu" href="#"><span class="ico-shop"></span>
商城
</a>
</li>
<li><a href="#"><span class="ico-service"></span>
服務(wù)
</a>
</li>
<li><a href="#"><span class="ico-me"></span>
我的
</a>
</li>
</ul>
</div>
</div>
當(dāng)input獲取焦點(diǎn)時(shí)底部菜單被頂上來(lái)問(wèn)題解決方案:
1.如果是短頁(yè)面,比如登錄頁(yè),上部的登錄表單div與底部的菜單div不會(huì)重合(兩個(gè)div是同級(jí)的),可以通過(guò)設(shè)置登錄表單div的z-index比底部菜單div的z-index大,這樣在頁(yè)面加載完成后,兩個(gè)div不會(huì)重疊,其層級(jí)設(shè)置也不會(huì)受影響。而在input獲取焦點(diǎn)之后,軟鍵盤彈出,兩個(gè)div發(fā)生重疊,因?yàn)樵O(shè)置了上部登錄表單div的z-index比底部菜單div的z-index大,所以底部菜單div會(huì)被擋住,也就是看不到被頂上來(lái)的底部菜單,問(wèn)題自然就迎刃而解了。
注意:z-index在position屬性值為默認(rèn)值static時(shí)不生效。
2.如果是長(zhǎng)頁(yè)面,比如商品展示頁(yè),上部的商品展示div肯定會(huì)與底部菜單div發(fā)生重疊,那么設(shè)置層級(jí)(z-index)肯定是行不通的,于是,可以使用js來(lái)控制底部菜單div的position的值來(lái)解決:
$('.search-input').bind('focus',function(){
$('#mini_nav').css('position','static');
}).bind('blur',function(){
$('#mini_nav').css({'position':'fixed','bottom':'0'});
});
說(shuō)明:在input獲取焦點(diǎn)時(shí),改變底部菜單div的position值為static(默認(rèn)值,不會(huì)脫離文檔流),會(huì)被放置到document的最后,不會(huì)出現(xiàn)在軟鍵盤上面,而當(dāng)input失去焦點(diǎn)時(shí),再把底部菜單div的position改回fixed,底部菜單div再次回到視口底部,這樣問(wèn)題就解決了。
到這里,我們又有一個(gè)疑問(wèn)了,若軟鍵盤是點(diǎn)擊收起鍵收起的,input不會(huì)失去焦點(diǎn),所以blur事件不會(huì)觸發(fā),底部菜單div的position也不會(huì)改回fixed,于是,我們可以通過(guò)捕捉鍵盤收起事件去改變底部菜單div的position。
那么如何捕捉到軟鍵盤收起事件呢?在網(wǎng)上搜索了很久,終于找到了一個(gè)解決方案:根據(jù)視口的大小變化判斷。
js代碼如下:
var wHeight = window.innerHeight; //獲取初始可視窗口高度
window.addEventListener('resize', function(){ //監(jiān)測(cè)窗口大小的變化事件
var hh = window.innerHeight; //當(dāng)前可視窗口高度
var viewTop = $(window).scrollTop(); //可視窗口高度頂部距離網(wǎng)頁(yè)頂部的距離
if(wHeight > hh){ //可以作為虛擬鍵盤彈出事件
$(".content").animate({scrollTop:viewTop+100}); //調(diào)整可視頁(yè)面的位置
//do something...
}else{ //可以作為虛擬鍵盤關(guān)閉事件
//$("content").animate({scrollTop:viewTop-100});
$('#mini_nav').css({'position':'fixed','bottom':'0'});//軟鍵盤關(guān)閉時(shí)改變底部菜單div的position
}
wHeight = hh;
});
OK,完成。
其實(shí)在用戶滾動(dòng)頁(yè)面時(shí)會(huì)使input失去焦點(diǎn)觸發(fā)blur事件,如果要求不是特別嚴(yán)格,這個(gè)小問(wèn)題可以忽略。
以上所述是小編給大家介紹的input獲取焦點(diǎn)時(shí)底部菜單被頂上來(lái)問(wèn)題的解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽
項(xiàng)目中有遇到需要使用餅圖展示每種狀態(tài)所占比例,去echarts官網(wǎng)學(xué)習(xí)了一番,下面這篇文章主要給大家介紹了關(guān)于echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽的相關(guān)資料,需要的朋友可以參考下2022-12-12
Javascript 兩種刷新方法以及區(qū)別和適用范圍
這篇文章主要介紹了Javascript 兩種刷新方法以及區(qū)別和適用范圍的相關(guān)資料,需要的朋友可以參考下2017-01-01
從URL中提取參數(shù)與將對(duì)象轉(zhuǎn)換為URL查詢參數(shù)的實(shí)現(xiàn)代碼
這兩種主要是對(duì)《Prototype淺析》先前略過(guò)的Sring部分中toQueryParams和Object部分的toQueryString方法的補(bǔ)充2012-01-01
在小程序中集成redux/immutable/thunk第三方庫(kù)的方法
這篇文章主要介紹了在小程序中集成redux/immutable/thunk第三方庫(kù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
JavaScript面向?qū)ο缶帉?xiě)購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了JavaScript面向?qū)ο缶帉?xiě)購(gòu)物車功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Bootstrap中定制LESS-顏色及導(dǎo)航條(推薦)
這篇文章主要介紹了Bootstrap中定制LESS-顏色及導(dǎo)航條的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11
javascript實(shí)現(xiàn)簡(jiǎn)單放大鏡效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)單放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

