Дизайн для мобилок и 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

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Дизайн для мобилок и CSS3 медиа запросы | | 2012-06-19 12:05:38 | | Статьи Web-мастеру | | Сегодня разрешение экранов варьирует от 320px (iPhone) до 2560px (большой монитор) или еще больше. Теперь пользователи пользуются интернетом не только через свой PC, но и при помощи мобильных | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: