ホームページ >ウェブフロントエンド >htmlチュートリアル >仮想キーボード、モバイル Web 開発の苦痛_html/css_WEB-ITnose

仮想キーボード、モバイル Web 開発の苦痛_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:24:591366ブラウズ

ネイティブ APP は仮想キーボードをポップアップ表示したり、仮想キーボードを格納したりし、入力ボックスは常に仮想キーボードの上に表示されます。以下に示すように:

モバイル Web にも同様の機能が必要な場合、実装できますか?

「ページの一番下に、position:fixed; の入力ボックスを置くだけじゃないの?何がそんなに難しいの?!」と思われるかもしれません

当時は私もそう思いました (⊙﹏⊙),でもそれは本当です そうですか?以下にいくつかのテスト結果を見てみましょう。

Android 4.2.1-qq ブラウザでのテスト結果は次のとおりです:

写真に示すように、入力ボックスがありません。 。 。

iOS の Safari を見てみましょう:

なぜまた帯下があるのでしょうか?

また、キーボードを閉じるとページが下に移動するのはなぜですか? 。 。

まあ、実際のところ、これは氷山の一角にすぎません。

本題に移りましょう。これらの問題をどのように解決できるでしょうか?

仮想キーボードから始めて、キーボードを吐き出すこととキーボードを引っ込めるという 2 つのイベントを監視できるかどうかを確認できます。

一部のブラウザは、サイズ変更イベントをキャプチャすることで仮想キーボードを閉じるかどうかを知ることができます。

テスト ページ: http://backtonaturedemo.github.io/frontend/case/keyborad/resize.html

テスト結果は次のとおりです:

iPhone 5s iOS 8.2:

(n はサイズ変更イベントを意味します)はトリガーできません。y はサイズ変更イベントをトリガーできることを意味します)

注: iOS の UC ブラウザーでは、固定位置入力ボックスをクリックすると、キーボードを呼び出した後は入力できません。 では、フォーカスとブラーのイベントを監視する場合はどうでしょうか?

テスト ページ: http://backtonaturedemo.github.io/frontend/case/keyborad/focusblur.html

上記 2 つのマシンでテストを続けると、結論は次のようになります:

ios とAndroid では、フレームをクリックして入力すると、フォーカス イベントがトリガーされます

iOS 上のすべてのブラウザは、仮想キーボードの「完了」キーをクリックするか、他の方法でキーボードを閉じると、ブラー イベントをトリガーします

Android フォンが「折りたたみボタン」をクリックすると、 」または他の操作を実行してキーボードを閉じると、blur イベントはトリガーされず、フォーカスは入力ボックス上にあります。

以下はテスト スクリーンショットです

したがって、次のソリューションを使用して Web コメント ボックスを作成できます

ページの例: http://backton a turedemo.github .io/frontend/case /keyborad/demo1.html

1. コメント ボックスを除くすべての要素は親要素に配置され、親要素が main になります。

1 <div class="main">2      <img src="http://backtonaturedemo.github.io/frontend/case/keyborad/test.png" alt="">3      <img src="http://backtonaturedemo.github.io/frontend/case/keyborad/test1.png" alt="">4 </div>

2. コメント ボックスと公開ボタンは div に配置されます

1 <div class="comment">2     <div class="buttons">3         <button class="sure cell">发表</button>4         <button class="cancel cell">取消</button>5     </div>6     <textarea class="input" placeholder="我来说两句"></textarea>7 </div>

注: キーボードを呼び出す前に、ページ スクロール バーの位置を記録する必要があります。

キーボードを呼び出した後、.main (コメントボックス以外の要素) を非表示にします。

入力ボックスを上げ、固定をキャンセルし、上マージンを追加します (公開ボタン用のスペースを残します)。

入力ボックスがぼやけている場合、または「キャンセル」をクリックすると、ページが復元されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。