Ответ 1
Я пробовал первое решение для вашей проблемы, поймав событие изменения размера С этим вы можете знать, что ориентация и жгут - клавиатура видна.
UPDATE: добавление поддержки iOS для мобильных сафари с помощью LKM-решения
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();
}
}
Для JS на основе этого HTML
<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>
Отметьте мою страницу примера