Прокрустовы окна

Вадим Макеев, Opera Software

Прокрустовы окна

Прокрустовы окна

Проблема

Хочу мобильный сайт

Клиент

Мобилка 240 × 320

Мобилка

Смартфон 480 × 800

Смартфон

Планшет 1280 × 800

Планшет
iPhone
Best viewed in IE
Best viewed in Webkit

Выньте iPhone
из задницы

Бендер

Выньте iPhone из задницы

Меня тошнит от извращенцев, по сути просто Apple-зависимых идиотов, называющих себя «мобильными веб-разработчиками», у которых iPhone застрял в заднице настолько глубоко, что их мозг погибает без кислорода — Питер Поль Кох (PPK)

The iPhone Obsession и There is no WebKit on Mobile

Десктоп

Как бы Nexus

Nexus

Как бы iPhone

iPhone

Как бы iPad

iPad

На самом деле

На самом деле

Хм-м…

Фрай

Вьюпорт

Вьюпорт

				<meta name="viewport" content="width=320">
			

Придумали в Apple

				@viewport { width:320px }
			

Переосмыслили в Opera, см. CSS Device Adaptation

Просто так

Текст

Вьюпорт по умолчанию

  • 980px — Mobile Safari
  • 850px — Opera
  • 800px — Android WebKit
  • 974px — Internet Explorer

Symbian WebKit, Samsung WebKit, BlackBerry…

Приближаем

Приближаем

Новый вьюпорт

				<meta name="viewport" content="width=320">
			
				@viewport {
				    width:320px
				    }
			

Фиксируем

Текст ограничен
Ширины
Вьюпорты
Ширины

Выбиратор вьюпорта

Фиксированный вьюпорт

				<meta name="viewport" content="width=1024">
			
  • Для любых фиксированных десктопных и мобильных сайтов
  • Значение — минимальная ширина для просмотра вашего сайта
  • Рекомендуется для всех сайтов

Относительный вьюпорт

				<meta name="viewport" content="width=device-width">
			
  • Для адаптирующихся, универсальных резиновых сайтов
  • Для резиновых мобильных версий
  • Значение — выставляется самим девайсом

Значение вьюпорта часто не соответствует размеру экрана

Опираемся на вьюпорт

				<meta name="viewport" content="width=320">
			
				@media screen and (device-width:320px) {
				    Ага, мобилка!
				    }
			

Ширина устройства

				<meta name="viewport" content="width=device-width">
			
				@media screen and (max-width:360px) {
				    Поймали Nokia 5800!
				    }
			

Как угодить всем?

Вьюпортики и вьюпортища

  • Крошечные: 84, 96, 101, 128, 130, 132
  • Маленькие: 160, 176
  • Средние: 208, 220, 240
  • Большие: 320, 360, 480+
  • Десктоп: 800+

Как угодить всем?

Мобилка и планшет

Вставить смартфон!

Мобилка, смартфон и планшет
Адаптация

FBI

DPI

iPhone vs. Finder
Screen vs. Finder

Пикселы?
Пикселы!
Пикселы…

Пикселы

Э-э-э…

Эми

Фан!

Никому нельзя верить!

Everybody Lies!

Device DPI

  • Ширина экрана HTC Desire — 480px
  • Итоговый device-width300px
  • Всё из-за настройки Zoom: 480px ÷ 160% = 300px
				<meta name="viewport"
				      content="target-densitydpi=device-dpi">
			
Portrait
Landscape

От девайса к девайсу…

  • Значение device-width для iPad всегда 768px,
    как его ни поворачивай
  • Значение device-width для Galaxy Tab 600px или 1024px,
    в зависимости от ориентации
  • При открытой клавиатуре Galaxy Tab всегда в ландшафтной ориентации, как его ни… ну, вы поняли

Тестирование

Тестирование
Статистика

Opera Mobile

Opera Mobile Emulator

Opera Mobile

Opera Mobile Emulator

Opera Mini

Opera Mini

Opera Mini

Opera Mini

microemu.org

opera.com/developer/tools

Android SDK

Android SDK

XCode

XCode

Сто килограммов девайсов

Девайсы

Прокрустовы окна

Вадим Макеев, Opera Software

Презентация: pepelsbey.net/pres/procrustes