Дизайн для мобилок и CSS3 медиа запросы
Сегодня разрешение экранов варьирует от 320px (iPhone) до 2560px (большой монитор) или еще больше. Теперь пользователи пользуются интернетом не только через свой PC, но и при помощи мобильных устройств, таких как iPad или Playbook. Таким образом, традиционный подход к фиксированным размерам страницы больше не является дееспособным. Веб-дизайн должен быть адаптирован под всё. Расположение элементов должно корректироваться автоматически, чтобы соответствовать разрешению дисплея. В этом уроке мы покажем вам, как создать кроссбраузерный дизайн, работая с HTML5 и CSS3 медиа запросами.
Сначала посмотрим на результат
Перед тем как начать читать данный урок, я рекомендую вам познакомиться с тем, что нам предстоит сделать. Измените размеры своего окна, чтобы увидеть, что элементы страницы действительно адаптируются под новые параметры (область просмотра браузера).
Обзор
Ширина главного контейнера составляет 980px. Этот размер подогнан для того, чтобы люди с экранами меньше 1024px смогли легко просматривать сайт. Медиа запрос используется для того, чтобы узнать, является ли область просмотра меньше, чем 980px. Если область просмотра меньше 650px, то элементы страницы адаптируются под новые требования и многоколоночное расположение становится одноколоночным.
HTML
Я не собираюсь подробно описывать HTML код. Скажу, что на странице у меня есть "pagewrap" контейнер, который содержит "header", "content", "sidebar", и "footer".
<div id="pagewrap"> <header id="header"> <hgroup> <h1 id="site-logo">Demo</h1> <h2 id="site-description">Site Description</h2> </hgroup> <nav> <ul id="main-nav"> <li><a href="#">Home</a></li> </ul> </nav> <form id="searchform"> <input type="search"> </form> </header> <div id="content"> <article class="post"> blog post </article> </div> <aside id="sidebar"> <section class="widget"> widget </section> </aside> <footer id="footer"> footer </footer> </div>
HTML5.js
Прошу заметить, что я использую HTML5. Internet Explorer, версия которого меньше 9, не поддерживает новые элементы, представленные в HTML5, такие как <header>, <article>, <footer>, <figure> и т.д. Прикрепив файл html5.js, исправит ситуацию и IE будет понимать новые элементы.
<!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
CSS
Сброс настроек элементов HTML5
Следующий CSS код сбросит стандартные настройки HTML5 элементов (article, aside, figure, header, footer и т.д.), чтобы элементы стали блочными.
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
Основная структура CSS
И тут я не собираюсь подробно останавливаться на коде. Заголовку мы выставляем фиксированную высоту в 160px. Контейнер "content" будет 600px в ширину и т.д.
#pagewrap { width: 980px; margin: 0 auto; } #header { height: 160px; } #content { width: 600px; float: left; } #sidebar { width: 280px; float: right; } #footer { clear: both; }
CSS3 Медиа запросы
Тут будет особенно интересно.
Медиа запросы Javascript
Internet Explorer 8 или более старые версии данного браузера не поддерживает медиа запросы CSS3. Но и на этот раз у нас есть, что подключть - css3-mediaqueries.js.
<!--[if lt IE 9]> <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> <![endif]-->
Вставляем CSS Медиа запросы
Создайте новый файл с таблицей стилей для медиа запросов.
<link href="/media-queries.css" rel="stylesheet" type="text/css">
Для экранов, которые меньше 980px (несколько столбцов)
Для данных размеров будут использоваться следующие правила:
pagewrap = сброс ширины до 95%
content = сброс ширины до 60 %
sidebar = сброс ширины до 30 %
Заметка: мы используем процент (%) для того, чтобы элементы были резиновыми.
@media screen and (max-width: 980px) { #pagewrap { width: 95%; } #content { width: 60%; padding: 3% 4%; } #sidebar { width: 30%; } #sidebar .widget { padding: 8% 7%; margin-bottom: 10px; } }
Для экранов, которые меньше 650px (один столбец)
Для данных размеров будут использоваться следующие правила:
header = выставляем значение auto;
searchform = меняем расположения элемента на 5px вверх;
main-nav = выставляем значение static;
site-logo = выставляем значение static;
site-description = выставляем значение static;
content = выставляем значение auto; (для того, чтобы контейнер развернулся на весь экран);
sidebar = сброс ширины к 100% и избавляемся от float.
@media screen and (max-width: 650px) { #header { height: auto; } #searchform { position: absolute; top: 5px; right: 0; } #main-nav { position: static; } #site-logo { margin: 15px 100px 5px 0; position: static; } #site-description { margin: 0 0 15px; position: static; } #content { width: auto; float: none; margin: 20px 0; } #sidebar { width: 100%; float: none; margin: 0; } }
Для экранов, которые меньше 480px
Для данных размеров будут использоваться следующие правила:
html = отключаем корректировку размера текста. По умолчанию, iPhone увеличивает размер текста таким образом, чтобы было удобнее читать. Подобного эффекта мы можем достичь, добавив webkit-text-size-adjust: none;
main-nav= сброс размера шрифта до 90%
@media screen and (max-width: 480px) { html { -webkit-text-size-adjust: none; } #main-nav a { font-size: 90%; padding: 10px 8px; } }
Гибкие изображения
Чтобы сделать изображения гибкими, просто добавьте свойства max-width:100 % и height:auto. Это сработает в IE7, но не в IE8 (как всегда). Для того, чтобы исправить ситуацию, воспользуйтесь следующим трюком. Добавьте строку width:auto\9 для IE8.
img { max-width: 100%; height: auto; width: auto\9; /* ie8 */ }
Гибкое видео
Для видео будем использовать тот же подход, что и в прошлом пункте. По каким-то странным причинам max-width:100 % (для встроенных элементов) не работает в Safari, поэтому тут мы напишем width:100%.
.video embed, .video object, .video iframe { width: 100%; height: auto; }
Инициализируем мета тег для iPhone
По умолчанию Safari уменьшает HTML страницы, чтобы вписаться в экран iPhone. Следующий мета тег сообщит данному браузеру отключить начальный масштаб.
<meta name="viewport" content="width=device-width; initial-scale=1.0">
Финал
Вот и всё, что мы хотели вам показать. Если у вас есть возможность, проверяйте демо на разных устройствах, таких как iPhone, iPad, Blackberry (более новые версии) и телефоны Android.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/8tAmpi_CQZk/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.