стиль экрана, когда виртуальная клавиатура активна



В идеале, я бы хотел, чтобы весь интерфейс имел пользовательский стиль это видно на ios (itouch / ipad) или Android-эквиваленте с виртуальной клавиатурой. См. ниже для получения более подробной информации.



пользовательский набор правил взлома CSS, которые будут активны, когда клавиатура "присутствует", также является приемлемым решением.



цели как андроидов, так и ios, на веб-сайте (HTML / JavaScript / CSS)
Также обратите внимание, что макет внутри: "жидкость".



Edit: Это был больше дизайн, чем текст; поэтому изменения не дезориентируют. На самом низком уровне я просто хочу изменить дизайн с виртуальными ключами и без них (возможно, просто изменение фона).



вопрос, на котором, это хорошая или плохая идея дизайна, является спорным. Однако я чувствую, что это не имеет отношения к вопросу. Для такого эксплойта можно использовать больше, чем текст (например, игры или интерактивные пресса.)



отсюда и щедрость: несмотря на то, что больше не нужен ответ для проекта, над которым я работал (использовался альтернативный дизайн). Я все еще считаю, что этот вопрос может выиграть от ответа.



По Умолчанию



                       +--------+ 
| |
+------------+ +-+-hidden-+-+ <- ~50% hidden
| +--------+ | | +--------+ |
| | | | | |visible | |
| | | | | | | | <- ~50% visible
| | 100% | | ==> | +--------+ |
| | | | / | |virtual | |
| | | | | | keys | |
| +--------+ | | +--------+ |
+------------+ +------------+


Желаемое Поведение



+------------+       +------------+   
| +--------+ | | +--------+ |
| | | | | |visible | | <- 100% visible (example styling)
| | | | | | | | Custom Styling
| | 100% | | ==> | +--------+ |
| | | | / | |virtual | |
| | | | | | keys | |
| +--------+ | | +--------+ |
+------------+ +------------+
929   4  

4 ответов:

Я не уверен, это желаемый эффект?. проверьте эту ссылку

http://jsfiddle.net/UHdCw/3/

обновление

(1). Предполагая, что его веб-сайт и работает в браузере устройства. Затем мы можем проверить наличие виртуальной клавиатуры, проверив размер экрана.

проверьте в браузере устройства -http://jsfiddle.net/UHdCw/8/show/

код : - http://jsfiddle.net/UHdCw/8/

(2). Если вы создаете собственное приложение с HTML5 и Phonegap, все будет по-другому. Поскольку нет прямого API-крючка для проверки состояния keybord, мы должны написать наш плагин в Phonegap.

В Android вы можете проверить, показать/скрыть статус клавиатуры с помощью машинного кода [регистрация здесь]. и нужно написать плагин Phonegap, чтобы получить эти события в нашем HTML.

[Phonegap является образец. Я думаю, что большинство html для нативных фреймворков имеют такую Фелисити, чтобы зацепиться за нативный код ]

обновление iOS

Как вы сказали, нет никакого изменения высоты / положения, когда клавиатура присутствует. Мы можем сделать одну вещь, когда вход получает фокус, мы можем добавить класс shrink и уменьшить размеры элементов. Проверьте следующую ссылку.

http://jsfiddle.net/UHdCw/28/show/

я столкнулся с той же проблемой, это работает для меня:

<!-- Android Viewport height fix-->
<script type="text/javascript">
var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {
    document.write('<meta name="viewport" content="width=device-width,height='+window.innerHeight+', initial-scale=1.0">');
}
</script> 

пусть JavaScript применит класс к тело когда элемент ввода имеет focus.

$("input, textarea").focus(function(){  $(document.body).addClass('when-keyboard-showing');     });
$("input, textarea").blur( function(){  $(document.body).removeClass('when-keyboard-showing');  });

и затем использовать @media запросы, чтобы определить, если мобильный вид:

@media (max-width:550px) { 
    body.when-keyboard-showing .header { height:0; padding:0; }
}

комбинация позволит вам стилизовать страницу, когда клавиатура на мобильный. Спасибо.

у меня точно проблемы. Вот мое решение до сих пор, я был бы признателен, если бы кто-то мог проверить на Apple:http://jsfiddle.net/marcchehab/f2ytsu8z/show (чтобы увидеть исходный код и все: http://jsfiddle.net/marcchehab/f2ytsu8z)

Я обнаружить, если они клавиатура выходит следующим образом: при загрузке я вычисляю переменную "sumedges", которая является $(window).ширина() + $(окно).высота.)( Затем, в случае $(window).изменить размер () я сравниваю: Если сумма $(окно).ширина() + $(окно).высота () стала меньше, чем" sumedges", это означает, что клавиатура отсутствует. Это работает здесь на Chrome на Android. Вы можете легко настроить этот код, чтобы делать все, что вам нравится.

var sumedges = $(window).width() + $(window).height();
$(window).resize(function(){
    if($(window).width() + $(window).height() < sumedges) {
    $("#display").html("keyboard out");
  } else {
    $("#display").html("keyboard in");
  }
});

используя jQuery, я не нашел способа заставить плавный переход, когда вы нажимаете на вход, и клавиатура выскакивает. но возможно, можно обмануть систему: в скрипке я установил поддельный вход (синий). Когда вы нажимаете на него, появляется реальный вход чуть ниже моего дисплея (желтый) и выбран. Таким образом, все это выглядит гладко здесь, на Chrome на Android. Еще раз, я был бы признателен, если бы вы могли проверить.

$("#fakeinput").click(function(){
    $("#realinput").show().children("input").focus();
  $("html,body").scrollTop($("#display").offset().top);
});

$("#realinput input").blur(function(){
    $("#realinput").hide();
});

Comments

    Ничего не найдено.