#android #jquery #css #jquery-mobile #mobile
#Android #jquery #css #jquery-мобильный #Мобильный
Вопрос:
Я пытаюсь ограничить количество столбцов сетки (используя jQuery Mobile — http://demos.jquerymobile.com/1.4.2/grids /) в зависимости от ширины экрана. Это для полноэкранного приложения, которое не будет масштабируемым, поэтому нет необходимости в адаптивном дизайне.
Чтобы привести пример, если приложение загружено на iPhone 3GS (320 Вт x 480 Ч), хотелось бы ограничить его только 2 столбцами. При загрузке на Samsung S3 (720 Вт x 1280 Ч) ограничьте количество столбцов 4. И т.д.
Думал об использовании свойств JS document.width или width.screen.width, но обнаружил, что они слишком противоречивы. На Samsung Galaxy S3 под управлением Android собственный браузер сообщает о ширине экрана как 720 пикселей, а браузер Chrome сообщает об этом как 320 пикселей.
Добавление и удаление метатега окна просмотра не повлияло на значение ширины из JS.
meta name =»viewport» content =»масштабируемый пользователем = нет, начальный масштаб = 1.0, максимальный масштаб = 1.0, минимальный масштаб = 1.0″
Также не было задержки поиска с помощью setTimeout.
Версии jQuery, которые я использую:
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
Есть ли способ добиться этого с помощью CSS?
Спасибо.
[ПРАВИТЬ / ПРАВИТЬ код]
Не уверен, что это проблема для приложения, которое я создаю. В Google Chrome на обновленных версиях Android видеть 4 столбца вместо 5 будет определенно «изящно проваливаться».
Ответ №1:
<meta name="viewport" content="width=device-width, target-densityDpi=device-dpi">
Посмотрите, исправит ли это. Galaxy отображает половину пикселей, чтобы позволить видеокарте устройства отображать резкость самостоятельно и не постоянно получать веб-сайты для настольных компьютеров с сайтов, которые используют ширину экрана для определения типа устройства, когда устройство мобильное.
Комментарии:
1. Привет, спасибо за ответ. К сожалению, добавление этих дополнительных свойств в тег meta viewport не повлияло на значение window.screen.width в Chrome.
2. Эта статья расскажет вам больше о проблеме, с которой вы столкнулись. 🙂 надеюсь, это поможет
3. codykochmann, хорошая статья. Я не уверен, что это проблема для приложения, которое я создаю, подробнее выше в редактировании.
Ответ №2:
Пока я знаю, что номер столбца должен быть объявлен жестко запрограммированным. Поэтому он должен создаваться динамически для управления количеством столбцов.
width=$(window).width();
или
width=$( document ).width();
И
if(width<=320)
{
myhtml='<div class="ui-grid-a" class="mymenu">"';
myhtml=myhtml '<div class="ui-block-a">Hello</div>';
myhtml=myhtml '<div class="ui-block-b">Hello</div>';
myhtml=myhtml '</div>';
}
else if(width>320 amp;amp; width<720)
{
myhtml='<div class="ui-grid-b" class="mymenu">"';
myhtml=myhtml '<div class="ui-block-a">Hello</div>';
myhtml=myhtml '<div class="ui-block-b">Hello</div>';
myhtml=myhtml '<div class="ui-block-c">Hello</div>';
myhtml=myhtml '</div>';
}
$('#menu_div').html(myhtml);
Комментарии:
1. Привет, width=$(document ).width(); также возвращает неверное значение (320px) в Chrome, работающем на Android 4.3.
2. затем используйте
width=$(window).width();
3. Я так и сделал. Я также попытался выполнить вызов после того, как DOM будет готов. Результат всегда равен 320 пикселям, когда он должен быть равен 720 пикселям, как указано в предустановленном браузере. Проблема, по-видимому, заключается не в том, что какой-либо из методов JS неверен, а в том, что пиксели устройства не совпадают с пикселями CSS и что предыдущее обходное решение с использованием target-densitydpi больше не поддерживается в Chrome на Android. Подробнее здесь: petelepage.com/blog/2013/02 /…