Mobile Development

индекс
97,52

Как создать вебсайт для мобильных устройств

Стили


User Agent

Один из способов включения стилей для мобильного устройства — это использование User Agent, которую получает сервер от клиента.
Этому может помочь набор скриптов: code.google.com/p/mobileesp/, а также сервис от яндекса api.yandex.ru/detector/
При работе с User Agent только одна проблема — это постоянно появляющиеся новые User Agent.


На стороне клиента

Раньше использовался такой подход:
<link rel="stylesheet" href="site.css" media="screen" />
<link rel="stylesheet" href="mobile.css" media="handheld" />

Строка с media=«screen» соотвествует обычному компьютеру, media=«handheld» — это мобильное устройство. Новые устройства отказываются от такого подхода и необходимо использовать запросы внутри атрибута media.

Например для устройств с шириной экрана 480px и меньше будем использовать код:

<link rel="stylesheet" href="mobile.css" media="only screen and (max-device width:480px)"/>

Комбинируя оба способа можно написать:
media="handheld, only screen and (max-device-width:480px)"

Выбор пользователя

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

Что писать в стилях

1. Избавьтесь от многоколоночной разметки
2. Поставьте display: none; на неважных элементах
3. Уменьшите поля вокруг элементов
4. Уменьшите использование картинок, особенно больших фоновых
5. Повысьте читаемость текста увеличив размер мелкого текста.
6. Выкиньте плавающие элементы
7. Учитывайте, что события mouseover не работают.

Что кроме стилей


Многие мобильные устройства понимают такую запись номера телефона:
<a href="tel:15032084566" class="phone-link">(503) 208-4566</a>


Некоторые устройства уже поддерживают HTML5, поэтому можно использовать, например, такие теги:
<input type="tel" />
<input type="email" />

Теги HTML5 позволяют проводить валидацию на стороне браузера и открывать соответствующий набор символов.

Размеры и ориентация

Современные мобильные устройства обычно масштабируют страницу, чтобы она вся отображалась на экране.
Это не всегда удобно. Чтобы изменить данное поведение браузера, нужно использовать тег meta с атрибутом viewport. Например:
<meta name="viewport" content="width=320" />


Данное определение означает, что 320 пикселей страницы будет видно на устройстве.
Также можно запретить масштабирование:
<meta name="viewport" content="width=320,user-scalable=false" />

Также можно добавить стили на основе ориентации устройства:
@import url("portrait.css") all and (orientation:portrait);
@import url("landscape.css") all and (orientation:landscape);

Как вы поняли, файл portrait.css будет использован при портретной ориентации, а landscape.css при альбомной.

Определение ориентации поддерживается не всеми устройствами, использование max-width более надежно для определения ширины экрана.

Специальные замечания по iPhone


1. На iPhone нет поддержки Adobe Flash
2. Не поддерживается тег
<input type="file" />
, поскольку нет доступа к файловой структуре.
3. Кэшируются файлы размером не более 25 Kb
4. Есть проблемы с @font-face — использованием загрузки внешних шрифтов. См. также статью насчет шрифтов.

Но вы можете использовать Javascript библиотеки, которые можно использовать для доступа к специальным функциям iPhone. Обратите внимание на Sencha Touch, jQTouch и iui. Эти библиотеки также работают и с Android. Дополнительно ожидается появление production-релиза jQuery Mobile.

См. таже CSS Framework, отображающий страницу в стиле IPhone

Также можно создать свою иконку для сайта, используя следующий синтаксис:
<link rel="apple-touch-icon" href="/customIcon.png"/>


Иконка должна быть 57x57 пикселов в формате png. Android также понимает такие иконки.

Статья основывается на статье www.smashingmagazine.com/2010/11/03/how-to-build-a-mobile-website/

Ссылки для дополнительного чтения


* State of Mobile Web Development – дискуссия о мобильной разработке в 3-х частях
* Return of the Mobile Stylesheet – использование стилей
* Hardboiled CSS3 Media Queries – как назначать стили для устройств
* CSS Media Query for Mobile is Fool’s Gold – аргументы против media queries
* Mobile Web Design – дизайн
* Mobile operating systems and browsers are headed in opposite directions – направления в мире мобильных устройств
* Pocket-Sized Design: Taking Your Website to the Small Screen – старая, но еще полезная статья.
+123
9 ноября 2010, 09:58
380

комментарии (40)

0
k12th #
Спасибо!
0
catsmeetman #
приятно-полезные нюансы
0
wearymax #
Кстати
media="only screen and (max-device width:***px)"
непредсказуемо ведет себя в IE. Как раз сейчас заморачиваюсь с этой темой тут

Спасибо за макс-кеш в 25кб, не знал :)
0
freeozone #
Очень хорошая статья, и прекрасная манера подачи материала. Продолжайте публиковаться, пожалуйста.
+2
LionAlex #
0
lelick #
>Дополнительно ожидается появление релиза jQuery Mobile.

А разве еще не вышел?
0
trurl123 #
это всего-лишь альфа
+2
neex #
Часто сталкиваюсь с тем, что разработчики настолько забивают на мобильные устройства, что не возможно перейти на страницу контактов в поисках контактных телефонов или карты, а потребность возникает как раз когда есть доступ в интернет только через телефон.
+1
VolCh #
А фидбэки даёте? Я вот задумался о введении такой поддержке в одном проекте по настоянию пользователей. Теперь надо как-то разобраться как её осуществлять (в этом статья поможет, надеюсь) и как тестировать не имея на руках таких девайсов и, желательно, не тратя мобильный трафик.
0
neex #
Если проверяю сайт знакомых, то даю. А если заходишь с мобилки когда нужно, то потом всегда забываешь.
+1
paco #
Вместо code.google.com/p/mobileesp/ можно использовать детектор от уважаемого Яндекса: api.yandex.ru/detector/
0
trurl123 #
спасибо, добавил ссылку
+1
artyfarty #
Стоит также упомянуть совершенно магический UIKit.

Это CSSка, отображающая обычную разметку в айфон-стиле. Например совершенно обычная HTML-ка с не менее обычным ul-li(...) без каких-либо классов будет выведена как дефолтный айфоновский лист.
0
trurl123 #
спасибо, включил в статью
0
VolCh #
Спасибо, как раз о чем-то таком думал последние дни :)

А нет ли где-нибудь обзора/статистики, какие разрешения экрана/браузеры/ос/js/html/css наиболее популярны в мобильном рунете? Вообще этот рынок не представляю, девайса соответствующего нет (wap сейчас вообще востребован?), а пользователи просят ввести поддержку, жалуясь и на глюки, и на общее неудобство UI под Opera Mini — на что нужно ориентироваться?
0
trurl123 #
Если у вас есть сайт, то такую статистику можно получить, используя Google Analytics.
0
waplab #
Объективную статистику от Google Analytics. ждать не стоит. Далеко не все браузеры мобильных девайсов поддерживают javascript
0
VolCh #
Сложно, имхо, получить достоверную статистику по мобильным браузерам на сайте, который в них отоброжается плохо.
0
artyfarty #
Ну вон у нелюбимого тут вконтактика есть аскетичная версия для опер мини — m.vkontakte.ru/ (ссылочки в столбик) и айфон-веб-приложение i.vkontakte.ru/.
Оба кстати чудесно работают и в хроме.
+1
L3n1n #
0
VolCh #
О, спасибо, то что нужно :)
0
kost #
Теги статьи запятыми разделите.
0
paco #
Если у вас есть Мак и вы пишите сайт под iPhone, то можно скачать бесплатный XCode.

В комплекте с ним идет DashCode — конструктор сайта для iPhone. С помощью AJAX можно подтягивать с сервера динамику.
+1
paco #
А для анализа не забывайте про такой чудесный инструмент как Яндекс.Метрика.

С появлением Метрики, в Google Analytics вообще перестал заходить.
0
metakey #
wurfl.sourceforge.net/

The WURFL is an XML configuration file which contains information about capabilities and features of many mobile devices.
0
beono #
ещё:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0"/>
<link rel="apple-touch-icon" href="/app-logo.png"/> 


apple-touch-icon — работает и на андроиде
0
L3n1n #
Все проблемы начинаються когда открываешь сайт с оперы мини. Ей просто наплевать на все стили и виевпорты. Их сервер просто режет CSS как ему хочется и отображает сайт как ему хочется.

Если есть об этом статьи буду рад за ссылки.
0
VolCh #
Вроде это только, если пользователь включит (или не отключит?) соответствующий режим
0
KaLGaN #
Ну и Safari Reference Library в помощь.
+8
cbx #
Такое впечатление что авторы последних статей по вёрстке под мобильные устройства находятся в какой-то параллельной реальности где из телефонов встречаются только iPhone и Android с поддержкой свежайших веб-стандартов. Было бы интересно посмотреть реальную статистику (например у контент-провайдеров) по моделям телефонов и браузерам, особенно в России.

Может быть я драматизирую, но если ориентироваться на более-менее массовый сегмент пользователей, то всё значительно сложнее:

  • С разрешениями экранов полный зоопарк, соответственно графику и размеры элементов в пикселах нужно либо сводить к минимуму, либо делать несколько версий сайта что увеличивает количество работы в разы
  • Зоопарк браузеров и их версий на порядок превосходит десктопный. Большинство браузеров содержит массу глюков, устарело и возможности для обновления нет, т.к. вендорам интереснее продавать новые модели телефонов нежели поддерживать старые
  • Операторские шлюзы, которые вытворяют всякие гадости с заголовками, пытаются самостоятельно сжимать/оптимизировать контент и даже имитировать поддержку cookie. И ещё умолчательные настройки точек доступа загоняющие клиентов в wap.
  • Javascript? А кто сказал что javascript на устройстве вообще есть или не обрезан?
  • CSS? Ну-ну. Пляски с хаками под десктопный IE покажутся вам сказкой по сравнению с той кашей что творится на мобильных устройствах
  • Про шрифты даже можно не говорить

Ну и вот ещё: www.passani.it/gap/
0
fStrange #
согласен
неплохо бы еще увидеть статистику Яндекса и Гугла по мобилам

статистика контент-провайдеров не очень показательна, ибо это определенный сегмент устройств
0
fStrange #
2. Не поддерживается тег
input type=«file» /
, поскольку нет доступа к файловой структуре.

это касается не только IPhone но и целого ряда старых мобил.

Что касается UserAgent и разрешения экрана, то есть пополняемая библиотека wurfl и Tera_WURFL — PHP MySQL driven WURFL
Она позволяет не прибегать к помощи Гугла и Яндекса
+1
mythmaker #
Советую читать вот эту статью — здесь более полный материал, да и примеров больше. Потом вот это и на закуску это.
0
trurl123 #
похоже вы эту статью не дочитали, поскольку первая ссылка уже есть в статье.
0
mythmaker #
Дочитал. Вы бы уж тогда сделали полноценный перевод, чем выдирать оттуда куски, имхо.
0
trurl123 #
Я посчитал, что в статье очень много воды и поэтому многое выкинул, оставил только то, что посчитал нужным.
0
webrover #
2. Поставьте display: none; на неважных элементах

лучше все таки вырезать блоки из шаблона (меньше трафик, меньше DOM дерево) — все равно у вас другой будет шаблон для мобильной версии
0
kostos #
Теги HTML5 позволяют проводить валидацию на стороне браузера и открывать соответствующий набор символов.

Теги ничего не позволяют, позволяет браузер.
0
Wott #
не люблю @import, скажите
<link rel="stylesheet" media="orientation: portrait" href="example.css" />
или
@media (orientation: portrait) { … }
насколько поддерживается?
0
lol2Fast4U #
У iPhone нет проблем с font-face, просто ему нужно давать шрифты в формате SVG. Как и Chrome < 4.x.

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