私はWebサイトのモバイルバージョンを構築しています。仮想キーボードが表示されているときにモバイルアプリで作成できるのと同じ分割画面効果をjQuery/js/html5またはその他のテクノロジーを使用して作成できるかどうか興味があります。
たとえば、ユーザーが自分のWebページを入力してテキスト入力フィールドをクリックすると、仮想キーボードが表示され、ブラウザはテキスト入力フィールドがある領域に自動的にズームします。
私が欲しいのは、仮想キーボードが新しい解像度(画面の高さ-キーボードの高さ)に基づいて表示された瞬間にページのコンテンツを変更できるようにすることです。ユーザーがテキストフィールドに入力したもの。
これが私が話していることを確認するためのいくつかのスケッチです:
これはキーボードなしのページビューであり、検索に基づく結果です。
縦向きキーボードのページ、ロゴが消え、テキスト入力が一番上に移動し、最大4つのアイテムが表示されます
横長キーボードのページ、ロゴが消え、入力が上に移動して拡大され、2つのアイテムのみが表示されます
キーボードが非表示の場合、ページはフェーズ1に進むはずです。
お役に立てれば。
私はサイズ変更イベントをキャッチすることで問題の最初の解決策を試みました
[〜#〜] update [〜#〜]: LKM solution を使用してiOSモバイルサファリサポートを追加
var is_keyboard = false;
var is_landscape = false;
var initial_screen_size = window.innerHeight;
/* Android */
window.addEventListener("resize", function() {
is_keyboard = (window.innerHeight < initial_screen_size);
is_landscape = (screen.height < screen.width);
updateViews();
}, false);
/* iOS */
$("input").bind("focus blur",function() {
$(window).scrollTop(10);
is_keyboard = $(window).scrollTop() > 0;
$(window).scrollTop(0);
updateViews();
});
これで、ロゴと一部のラインアイテムの表示と非表示を切り替えることができます
function updateViews() {
$("li").hide();
if (is_keyboard) {
$("#logo").hide();
if (is_landscape) {
$("li").slice(0, 2).show();
}
else {
$("li").slice(0, 4).show();
}
}
else {
$("#logo").show();
$("li").show();
}
}
このHTMLに基づくJSの場合
<div id="logo">Logo</div>
<input type="text"><input type="submit" value="search">
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
チェックアウト 私のサンプルページ