問題描述:移動端頁面輸入框聚焦伴隨着鍵盤彈起,底部icon浮到鍵盤上方,致使樣式不友好javascript
解決思路:在鍵盤彈起時,不讓本來固定在底部的icon自動浮起。監聽屏幕的實時高度,控制底部按鈕的顯示與否,從而達到按鈕固定在底部的效果。html
解決方案(本例是在vue框架下實現的解決方案代碼):vue
html:java
<div class="login-content-footer" v-if="heightChange"> <img src="../../assets/images/login-wxLogin.png" alt="" class="login-content-footer-wxLogin" @click="wxLogin" v-show="WxFlag"> <img src="../../assets/images/personal-footer.png" class="login-content-footer-img"> </div>
data部分:ios
data () { return { heightChange: true, docmHeight: document.documentElement.clientHeight, //默認屏幕高度 showHeight: document.documentElement.clientHeight, //實時屏幕高度 } }
監聽屏幕實時高度: 框架
watch:{ showHeight() { if (this.docmHeight > this.showHeight) { this.heightChange = false; } else { this.heightChange = true; } }, }
mounted週期:this
mounted() { // window.onresize監聽頁面高度的變化 window.onresize = () => (() => { this.showHeight = document.body.clientHeight; })(); },
結果:spa
Android手機鍵盤彈起時實時屏幕高度會改變,可是蘋果手機不管是默認輸入法仍是安裝的其餘輸入法,鍵盤彈出的高度不會改變,可是慶幸的是大部分ios已經支持了fixed屬性htm
還發現一個小的bug就是蘋果手機點擊輸入框時偶爾會閃現一個icon,經過給父元素加入position:relative和足夠的padding-bottom解決了,以後我發現能夠用position:absolute定位父元素給position:relative和足夠的padding-bottom能達到一樣的效果^_^blog