От автора: вашему сайту требуется мобильный вид. Вам придется выбирать: адаптивный дизайн или специальный мобильный сайт, верно? Может, и нет. Может быть, удастся сочетать и дополнить одну версию другой?
Каждый день я и наша команда трудимся над CodePen. Но нас трое. Наша мобильная стратегия состоит в том, чтобы уменьшить все как можно лучше, так как у нас 1) есть время и 2) отличное представление о том, как справиться с этой задачей.
Пример адаптивного шаблона
Возьмем страницу Recent Activity. Она настолько проста, что лучшее решение – написать пару медиазапросов для перетасовки элементов и немного JavaScript’а для переключения фильтров:
Пример специального мобильного шаблона
Теперь посмотрите нашу страницу Details на настольном компьютере:
Эта страничка гораздо сложнее. Она разделяет разметку вида страницы, как визуальный редактор. Область предпросмотра можно выбрать и потащить, чтобы сделать ее больше или меньше. Тут есть и команды с клавиатуры. Оставлять ее в размере десктопа неудобно, так как текст микроскопический. После применения нужных метатэгов и загрузки в мобильном размере получилась очень неуклюжая разметка и прокрутки там, где они вообще были возможны.
Из всего сайта этот мобильный вид был самым ужасным.
При поддержке CSS я мог бы объявить этому виду войну и привел бы его в порядок. Но если так сделать, при этом загружается довольно много JavaScript’а, не имеющего больше никакого смысла. Вместо этого я решил выбрать специальный мобильный шаблон. Таким образом, мне удалось взять HTML, CSS и JavaScript под полный контроль и загрузить только необходимое. Я смог многократно применить почти все, так как добился всего, подойдя с перспективы модулей. Я смог подобрать HTML-составляющие, модули JS и скомпоновать новый файл CSS из тех фрагментов, которые были нужны – написав «с нуля» очень немногое.
Теперь вид страницы Details стал гораздо удобнее, не говоря уже о быстроте.
Для тех, кому любопытно, мы применяем browser gem и выбираем шаблон для формирования изображения на уровне регулятора. Это – анализатор пользовательского агента, не идеальный, но, по крайней мере, на серверной стороне, и основанный на проекте с открытым исходным кодом, все время усовершенствующемся.
1 2 3 4 5 |
if browser.mobile? render :template => 'details/mobile', :layout => "mobile-pages" else render :template => 'details/index', :layout => "pages" end |
Также запомните, что не существует ничего, чего нельзя сделать в мобильной версии, но можно на десктопе.
Пример вида страницы Uhm-Not-Quite-Ready
Пока еще не все виды страниц CodePen отлично смотрятся на маленьком экране. Страничка Editor – вероятно, самая важная в приложении – не пользуется ни адаптивным дизайном, ни мобильным шаблоном.
Она довольно хорошо работает на iPad’е и больших «таблетках», но на маленьких экранах смотрится неидеально. Этот вид нельзя оставить непродуманным. Бросить разработку дизайна на размерах десктопа можно, пока не появится хорошая идея, и мы сможем за него приняться. Вероятнее всего, это будет специальный мобильный шаблон.
Пример специальных мобильных компонентов в адаптивном шаблоне
Посмотрите вид страницы Profile:
Это – адаптивный шаблон. Я считаю, что он отлично работает, за исключением области «закладок», где разбивается на две строки. Это неудобно и не будет масштабироваться, когда мы станем потенциально добавлять дополнительную навигацию. Вместо того, исключительно в это место мы подаем другую составляющую, которая вместо закладок выводит навигацию меню select.
В любом случае уже лучше.
Это процесс
Я размещаю эту статью в блоге не целью указать CodePen в качестве путеводной звезды идеального мобильного дизайна. Это, конечно, не так. Я искренне считаю интересными гибридный и итеративный подходы к разработке мобильных сайтов.
Не требуется никаких отдельных доменов/URL’ов, никаких отдельных хранилищ/баз исходных кодов, никаких отдельных команд разработчиков. Все вместе, как один огромный монстр. Как, я думаю, и должно быть.
Связано:
RESS: Адаптивный дизайн + Компоненты серверной стороны
Автор: Chris Coyier
Источник: //css-tricks.com/
Редакция: Команда webformyself.