モバイル端末H 5ページの下部メニューが携帯電話のキーボードに突きつけられる問題
1397 ワード
これまでのプロジェクトではずっとこの問題があったが、微信側でもwebviewでappにパッケージ化しても、今日はこの問題を解決しようと決心した.
テストにより、下部メニュー(footer)が押し上げられたのは、携帯電話がキーボードをオンにした後、「ブラウザ」の高さが変化し、下部メニューのposition属性がfixedなので、下部に現れたためだということが分かった.
したがって、対応する解決策は、ブラウザの高さをリスニングし、変化が発生した場合、下部メニューを非表示にすることです.
私はvueを使ってfooterをコンポーネントにカプセル化しました
まずdataでいくつかのフィールドを定義します
htmlで、isOriginHeightフィールドでfooterの非表示/表示を制御
テンプレートのマウントが完了したら、「ブラウザウィンドウの変更時にトリガー関数」を追加してscreenHeightフィールドに値を割り当てます.
watchの変化を監視し、高さが変化したかどうかを判断し、isOriginHeigtフィールドを変更する
以上
vueを使わない仲間はこの考えを参考にすることができます
今のところこの方法はまだ問題に直面していないので、問題に直面した仲間はコメントして交流することができます.
テストにより、下部メニュー(footer)が押し上げられたのは、携帯電話がキーボードをオンにした後、「ブラウザ」の高さが変化し、下部メニューのposition属性がfixedなので、下部に現れたためだということが分かった.
したがって、対応する解決策は、ブラウザの高さをリスニングし、変化が発生した場合、下部メニューを非表示にすることです.
document.body.clientHeight body
document.documentElement.clientHeight ,
私はvueを使ってfooterをコンポーネントにカプセル化しました
まずdataでいくつかのフィールドを定義します
data: function(){
return {
screenHeight: document.documentElement.clientHeight, //
originHeight: document.documentElement.clientHeight, // ,
isOriginHeight: false //
};
}
htmlで、isOriginHeightフィールドでfooterの非表示/表示を制御
テンプレートのマウントが完了したら、「ブラウザウィンドウの変更時にトリガー関数」を追加してscreenHeightフィールドに値を割り当てます.
mounted() {
window.onresize = () => {
return (() => {
this.screenHeight = document.documentElement.clientHeight;
})()
}
}
watchの変化を監視し、高さが変化したかどうかを判断し、isOriginHeigtフィールドを変更する
watch: {
screenHeight (val) {
if(this.originHeight - val>60) { // , 60px footer
this.isOriginHeight = false;
}else{
this.isOriginHeight = true;
}
}
}
以上
vueを使わない仲間はこの考えを参考にすることができます
今のところこの方法はまだ問題に直面していないので、問題に直面した仲間はコメントして交流することができます.