摘要:背景在寫提交訂單頁面時候,底部按鈕當(dāng)我點(diǎn)擊輸入留言信息的時候,底部提交訂單按鈕被輸入法軟鍵盤頂上去遮擋住了。原來的樣式主要是當(dāng)輸入法點(diǎn)擊出現(xiàn)時候修改為綁定動態(tài),,通過來顯示動態(tài)顯示,初始值設(shè)置另外設(shè)置初始屏幕高度變化屏幕高度。
背景:在寫提交訂單頁面時候,底部按鈕當(dāng)我點(diǎn)擊輸入留言信息的時候,
底部提交訂單按鈕被輸入法軟鍵盤頂上去遮擋住了。
實現(xiàn)原理:當(dāng)頁面高度發(fā)生變化的時候改變底部button的樣式,沒點(diǎn)擊前button在底部固定
position: fixed;當(dāng)我點(diǎn)擊input的時候樣式變成position: static!important;
一開始的解決方案是通過input的聚焦和失焦,但是有個問題,當(dāng)我點(diǎn)擊input的時候聚焦,
再點(diǎn)擊鍵盤上的隱藏按鈕時就沒辦法恢復(fù)原來的fixed。
原來的樣式主要是position: fixed;當(dāng)輸入法點(diǎn)擊出現(xiàn)時候修改為 position: static!important;
.payOnline { position: fixed; bottom: 0; left: 0; right: 0; width: 100%; background: #fff; font-size: 17px; } .nav-hide { position: static!important; }
vue綁定動態(tài)class,‘nav-hide’ ,通過hideClass來顯示動態(tài)顯示,
初始值設(shè)置hideClass: false,
另外設(shè)置初始屏幕高度 docmHeight,變化屏幕高度 showHeight 。
//其他代碼合計:¥{{totalFee}}//其他代碼提交訂單
watch 監(jiān)聽showHeight,當(dāng)頁面高度發(fā)生變化時候,觸發(fā)inputType方法,
window.onresize 事件在 vue mounted 的時候 去掛載一下它的方法,
以便頁面高度發(fā)生變化時候更新showHeight
data(){ retrun{ // 默認(rèn)屏幕高度 docmHeight: document.documentElement.clientHeight, //一開始的屏幕高度 showHeight: document.documentElement.clientHeight, //一開始的屏幕高度 hideClass: false, } }, watch:{ showHeight: "inputType" } methods: { // 檢測屏幕高度變化 inputType() { if (!this.timer) { this.timer = true let that = this setTimeout(() => { if (that.docmHeight > that.showHeight) { //顯示class this.hideClass = true; } else if (that.docmHeight <= that.showHeight) { //顯示隱藏 this.hideClass = false; } that.timer = false; }, 20) } }, }, mounted() { // window.onresize監(jiān)聽頁面高度的變化 window.onresize = () => { return (() => { window.screenHeight = document.body.clientHeight; this.showHeight = window.screenHeight; })() } }方法二
另外還有一種解決方案就是不要將按鈕固定到底部,簡單粗暴適合對ui要求不高的前端頁面,例如原來我的保存地址按鈕是固定在底部的,出現(xiàn)上面的問題后我把樣式修改了一下,取消fixed定位,加了margin,也解決了這個問題;
保存并使用.address-from { bottom: .2rem; width: 70%; text-align: center; padding: 10px 0; background: #f23030; font-size: 16px; color: #fff; margin: 1.5rem; border-radius: 2px; }
如果大家有更好的方法希望能夠交流學(xué)習(xí)
微信6.7.4 IOS12 手機(jī)鍵盤收縮后白屏問題加directive
Vue.directive("resetPage", { inserted: function(el) { // 監(jiān)聽鍵盤收起事件 document.body.addEventListener("focusout", () => { if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // 軟鍵盤收起的事件處理 setTimeout(() => { const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0 window.scrollTo(0, Math.max(scrollHeight - 1, 0)) }, 100) } }) } })
input添加 v-reset-page
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94041.html
摘要:第八集從零開始實現(xiàn)輸入框組件本集定位組件是交互的一大利器他與用戶的交流最為密切所以奠定了他在組件界的重要地位也算是一種如果可以的話本集也會一起說完畢竟是一個類型的一起學(xué)完收獲會很大古人云組件不封輸入框,一到面試就發(fā)慌一簡介大家如果對這個 第八集: 從零開始實現(xiàn)(輸入框input,textarea組件) 本集定位: input組件是交互的一大利器, 他與用戶的交流最為密切, 所以奠...
摘要:第八集從零開始實現(xiàn)輸入框組件本集定位組件是交互的一大利器他與用戶的交流最為密切所以奠定了他在組件界的重要地位也算是一種如果可以的話本集也會一起說完畢竟是一個類型的一起學(xué)完收獲會很大古人云組件不封輸入框,一到面試就發(fā)慌一簡介大家如果對這個 第八集: 從零開始實現(xiàn)(輸入框input,textarea組件) 本集定位: input組件是交互的一大利器, 他與用戶的交流最為密切, 所以奠...
摘要:最近用一種第三方開發(fā)框架開發(fā),其中一個頁面有十幾個輸入框,在點(diǎn)擊輸入時,軟鍵盤彈起,導(dǎo)致頁面往上頂,底部的按鈕也全部彈到頁面上面去了,布局全被打亂。等輸入完,軟鍵盤收起時,頁面恢復(fù)原狀。 最近用 uniapp(一種第三方 app 開發(fā)框架) 開發(fā) app,其中一個頁面有十幾個 input 輸入框,在點(diǎn)擊 input 輸入時,軟鍵盤彈起,導(dǎo)致頁面往上頂,底部的按鈕也全部彈到頁面上面去了,...
摘要:滑動時頁面警告解決方法不支持的解決辦法姓名身份證號碼重點(diǎn)在于給設(shè)置高度和偽元素微信去掉底部返回橫條問題框自動填充內(nèi)容背景顏色為黃色設(shè)置文字不居中設(shè)置間距和等值即可 滑動時頁面警告 [Intervention] Unable to preventDefault inside passive event listener due to target being treated as pas...
閱讀 3344·2021-11-22 15:22
閱讀 2867·2021-10-12 10:12
閱讀 2162·2021-08-21 14:10
閱讀 3831·2021-08-19 11:13
閱讀 2849·2019-08-30 15:43
閱讀 3230·2019-08-29 16:52
閱讀 446·2019-08-29 16:41
閱讀 1438·2019-08-29 12:53