- •Кит Джереми html5 для веб-дизайнеров Предисловие
- •1. Краткая история разметки
- •От ietf до w3c: путь к html 4
- •Xhtml 1: html по правилам xml
- •Xhtml 2: терпению пришел конец
- •Раскол: whatwg tf?
- •Объединение
- •Xhtml умер: да здравствует синтаксис xhtml
- •Развитие html5
- •2. Устройство html5
- •Принципы устройства
- •Ближе к реальности
- •Обработка ошибок
- •Доктайп, скажите честно, я буду жить?
- •Будем проще
- •Синтаксис: размечайте, как хотите
- •Мы так не разговариваем
- •Было приятно познакомиться, чао
- •Перемен, мы ждем перемен!
- •Анонимная цитата
- •Элемент a на стероидах
- •Новые игрушки! api JavaScript
- •3. Мультимедиа
- •Танец вокруг архитектуры: как рисовать с помощью кода
- •Canvas. Ага! и для чего он нужен?
- •Доступ запрещен
- •Умный Canvas
- •Вырваться из-под контроля
- •Буферизация
- •Его вам сразу вклю́чат, а может быть, включáт
- •Запасной вариант
- •Доступ на все уровни
- •Нативный режим
- •Типы полей ввода
- •Контакты
- •Ползунки
- •Проверка
- •Счетчики
- •Дата и время
- •Выбор цвета
- •Сделай сам
- •В ожидании будущего
- •5. Семантика
- •Расширяемость
- •Микроформаты
- •Вскипятить океан
- •Новые элементы
- •Структура
- •Лекарство от избытка дивов?
- •Модели содержимого
- •Содержимое, разбивающее на секции
- •Алгоритм содержания
- •Корневые элементы разделов
- •Переносимость
- •Локальные стили
- •6. Использование html5 сейчас
- •Заголовки
- •Валидация
- •Тестирование функций
- •Выберите собственную стратегию
- •Ресурсы
- •Включайтесь!
- •Будущее
- •Об авторе
Алгоритм содержания
Пока новое содержимое-разделитель не дает нам ничего такого, чего мы не могли бы делать с предыдущими версиями HTML. Вот самое интересное: в HTML5 у каждого содержимого-разделителя есть свое собственное внутреннее содержание. Таким образом, вам не нужно следить, на каком уровне заголовков вы находитесь, – можете просто каждый раз начинать с h1:
<h1>An Event Apart</h1>
<section>
<header>
<h1>Города</h1>
</header>
<p>Присоединяйтесь к нам в 2010 году в этих городах.</p>
<section>
<header>
<h1>Сиэтл</h1>
</header>
<p>Идите в изумрудныйгород по дороге из желтого кирпича.</p>
</section>
<section>
<header>
<h1>Бостон</h1>
</header>
<p>Для друзей – Beantown.</p>
</section>
<section>
<header>
<h1>Миннеаполис</h1>
</header>
<p>Здесь так <em>мило</em>.</p>
</section>
</section>
<small>Размещение не предоставляется.</small>
В предыдущих версиях HTML содержание было бы построено неправильно:
• An Event Apart
• Города
• Сиэтл
• Бостон
• Миннеаполис
В HTML5 содержание строится правильно:
• An Event Apart
• Города
• Сиэтл
• Бостон
• Миннеаполис
hgroup
Бывают времена, когда вы хотите использовать элемент заголовка, но не хотите, чтобы его содержимое появлялось в содержании документа. Именно это позволяет вам сделать элемент hgroup:
<hgroup>
<h1>An Event Apart</h1>
<h2>Для людей, которые создают вебсайты</h2>
</hgroup>
В этом случае заголовок второго уровня («Для людей, которые создают веб-сайты») – это на самом деле слоган. В элементе hgroup только первый заголовок войдет в содержание. Первый заголовок не обязательно должен быть h1:
<hgroup>
<h3>Скрипты для DOM</h3>
<h4>Веб-разработка на JavaScriptдля Document Object Model</h4>
</hgroup>
Корневые элементы разделов
Некоторые элементы не появляются в сгенерированном содержании. Другими словами, неважно, сколько заголовков вы используете внутри своих элементов, – в содержании документа они не появятся.
Элементы blockquote, fieldset и td являются исключениями для алгоритма составления содержания. Эти элементы называются «корневыми элементами разделов» – это не нужно путать с элементами-разделителями.
Переносимость
Так как каждый элемент, относящийся к типу контента-разделителя, создает собственное содержание, теперь в вашем документе может быть гораздо больше заголовков, чем просто от h1 от h6. Теперь нет никакого ограничения на то, как глубоко могут спускаться уровни ваших заголовков. Что более важно, теперь вы можете начать представлять свое содержимое в более модульном ключе.
Предположим, у меня есть запись в блоге под названием «Бутерброд с сыром». До HTML5 мне нужно было бы знать контекст, в котором расположена запись, чтобы определить, какой уровень заголовков использовать для заголовка записи. Если запись находится на главной странице, то она появляется вслед за элементом h1, который содержит название моего блога:
<h1>Мой клёвый блог</h1>
<h2><a href="cheese.html">Бутерброд с сыром</a></h2>
<p>Моя кошка съела бутерброд с сыром.</p>
Но если я публикую запись в блоге на отдельной странице, то я хочу, чтобы заголовок записи был заголовком первого уровня:
<h1>Бутерброд с сыром</h1>
<p>Моя кошка съела бутерброд с сыром.</p>
С HTML5 мне не нужно волноваться о том, какой уровень заголовков использовать. Мне нужно просто использовать содержимое-разделитель: в данном случае – элемент article:
<article>
<h1>Бутерброд с сыром</h1>
<p>Моя кошка съела бутерброд с сыром.</p>
</article>
Теперь это содержимое по-настоящему переносимо. Неважно, где оно появляется, на отдельной странице или на главной странице блога:
<h1>Мой клёвый блог</h1>
<article>
<h1>Бутерброд с сыром</h1>
<p>Моя кошка съела бутерброд с сыром.</p>
</article>
Новый алгоритм составления HTML5 выдает правильный результат:
• Мой клёвый блог
• Бутерброд с сыром
