Главная страница



Влад Мержевич

Главной называется веб-страница, с которой обычно начинается просмотр сайта. Она открывается при наборе адреса сайта и в каком-то смысле является его «лицом». Именно с главной страницы начинается знакомство посетителей с сайтом, поэтому надо сразу передать тематику сайта и обеспечить быстрый доступ к содержанию.

На главной странице нашего учебного сайта представлено три блока — краткое описание сайта, предупреждение и ссылки на страницы с описанием методов. Во всех блоках используется текст, поэтому в первую очередь нужно задать его стилевое оформление. Гарнитуру шрифта, его размер и межстрочное расстояние (интерлиньяж) можно задать через универсальное свойство font.

body {
 font: 0.9em/1.2 Arial, Helvetica, sans-serif;
}

Первое значение 0.9em означает размер шрифта, второе после слэша интерлиньяж, а после пробела следует набор шрифтов, которые следует использовать на странице. Если первый идущий шрифт Arial не будет найден в операционной системе, браузер начнёт искать шрифт Helvetica. Если и он не обнаружится, будет выбран любой другой рубленый шрифт, или как их ещё называют, без засечек.

Блок с предупреждением

В этом блоке используется два изображения: одно для головы, второе для заголовка текста (рис. 6.12).

Блок с предупреждением

Рис. 6.12. Блок с предупреждением

Само расположение элементов можно выполнить разными методами, к примеру, установить рисунок с головой как фоновый без повторения и сдвинуть текст вправо, либо сделать обтекание через float. Рассмотрим эти методы подробнее.

Метод 1. Использование обтекания

Для начала нам требуется создать код, к которому в дальнейшем прикладываются стили. Плавающие элементы всегда располагаем в начале, поэтому рисунок с головой вставляем первым, затем уже следует заголовок и текст (пример 6.18).

Пример 6.18. Блок с предупреждением

<section class="warning">
 <img src="/images/head.png" class="voodoohead" alt="" width="49" height="92">
 <header><h1><img src="images/warning-title.png" alt="Предупреждение" 
      width="137" height="30"></h1></header>
 <p>Все перечисленные на сайте методы ловли льва являются
 теоретическими и базируются на вычислительных методах. Авторы не гарантируют
 вашей безопасности при их использовании и снимают с себя всякую 
 ответственность за результат. Помните, лев это хищник и опасное 
 животное!</p>
</section>

В стилях для изображения головы ставится свойство float со значением left, а тексту заголовка и абзаца смещение левого края через margin-left. Для отмены обтекания к warning добавляется overflow со значением hidden.

section header { 
 background: none; /* Убираем фон */ 
}
.warning  {
 overflow: hidden; /* Отменяем обтекание */
 margin: 30px 0; /* Отступ сверху и снизу */
}
.voodoohead {
 float: left; /* Обтекание справа */
}
.warning H1, .warning P { 
 margin: 0 0 0 70px; /* Отступы */
}

Метод 2. Фоновая картинка

Код останется практически неизменным по сравнению с примером 6.18, только изображение головы следует убрать, поскольку оно добавляется через свойство background.

section header {
 background: none; /* Убираем фон */  
}
.warning {
 overflow: hidden; /* Отменяем обтекание */
 margin: 30px 0; /* Отступ сверху и снизу */
 background: url(images/head.png) no-repeat;
 min-height: 92px; /* Минимальная высота */
}
.warning H2, .warning P { 
 margin: 0 0 0 70px; /* Отступы */
}

Также следует добавить свойство min-height, чтобы при уменьшении высоты блока фоновая картинка не обрезалась. Значение равно высоте изображения head.png.

Блок со ссылками

Каждый блок со ссылкой и её описанием обрамлён тегом <section>, сама ссылка располагается внутри тега <h1>, который в свою очередь находится внутри <header>. Такая логика может показаться странной — зачем нам <header>, когда на странице он уже есть, и к чему столько тегов <h1>? В HTML5 своя логика построения структуры документа, которая отличается от привычной схемы HTML4. В предыдущей версии HTML иерархия блоков строилась на основе тегов <h1>...<h6>. Соответственно, <h1> задавал заголовок страницы, <h2> и <h3> подзаголовки. Чтобы схема документа строилась правильно, на странице должен быть только один <h1>. Спецификация HTML5 устанавливает алгоритм генерации схемы документа, включающий в себя новые семантические теги. Этот алгоритм говорит, что теги <article> и <section> создают новый раздел. А в HTML5 каждый раздел может содержать собственный тег <h1>.

<section>
 <header><h1><a href="assumption.html">Допущения</a></h1></header>
<p>Для упрощения расчетов некоторые реальные величины заменяются их приближенным аналогом, которые хотя и влияют на точность результата, находятся в пределах допустимой погрешности вычисления.</p> </section> <section> <header><h1><a href="simple-iteration.html">Метод простых итераций</a></h1></header> <p>Самый простой метод поиска льва основанный на переборе.</p>
</section>

В стилях устанавливаем цвет ссылок через свойство color, цвет ссылок при наведении на них курсора мыши с помощью псевдокласса :hover и параметры заголовка <h1>.

a {
 color: #1b75bc; /* Цвет ссылок */
}
a:hover {
 color: #d6562b; /* Цвет ссылок при наведении */
}
a img { 
 border: none; /* Прячем границу вокруг изображений-ссылок */
}
section h1 {
 font-size: 1.5em; /* Размер текста */
 font-weight: normal; /* Нормальное начертание */
 margin-bottom: 0; /* Отступ снизу */
}

Теперь собираем вместе все наши разделы и получаем окончательный код главной страницы сайта (пример 6.19).

Пример 6.19. Главная страница

HTML5IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Как поймать льва в пустыне?</title>
  <link rel="stylesheet" href="http://htmlbook.ru/style/lion.css">
  <!--[if lt IE 9]> 
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
  <![endif]-->
 </head>
 <body>
  <header>
   <div class="header-bg">
    <img src="http://htmlbook.ru/images/header-title.png" alt="Как поймать льва в пустыне" 
              width="456" height="166">
   </div>
  </header>
  <div class="content-gradient">
   <div class="content-bg">
    <div class="content-white">
     <p>Перед вами учебный сайт для демонстрации возможностей HTML и CSS по 
        созданию своего ресурса и его публикации в Интернете. Поскольку 
        любой сайт должен содержать полезную или интересную информацию, 
        мы выбрали тему ловли льва в пустыне, которая будет, без всяких 
        сомнений, полезна любому посетителю. Так, на всякий случай.</p>
     <section class="warning">
      <header><h1><img src="http://htmlbook.ru/images/warning-title.png" alt="Предупреждение" 
       width="137" height="30"></h1></header>
      <p>Все перечисленные на сайте методы ловли льва являются 
        теоретическими и базируются на вычислительных методах. Авторы не 
        гарантируют вашей безопасности при их использовании и снимают с 
        себя всякую ответственность за результат. Помните, лев это хищник 
        и опасное животное!</p>
     </section>
     <section>
      <header><h1><a href="http://htmlbook.ru/assumption.html">Допущения</a></h1></header>
      <p>Для упрощения расчетов некоторые реальные величины заменяются их 
        приближенным аналогом, которые хотя и влияют на точность результата, 
        находятся в пределах допустимой погрешности вычисления.</p>
     </section>  
    </div> 
   </div>
  </div>
  <footer>
   <img src="http://htmlbook.ru/images/lion.png" alt="" width="130" height="80" class="lion">
   <div class="footer-bg">
    <div class="copyright">
     <p><strong>Учебный сайт «Как поймать льва в пустыне»</strong></p>
     <p>&copy; Влад Мержевич</p>
    </div>
   </div>
  </footer>
 </body>
</html>

Код HTML завершён, но стилевой файл lion.css следует отредактировать с учётом новых тегов и указать, что теги <header>, <section>, <footer>, <aside>, <nav>, <article> являются блочными. Это необходимо для корректного применения к ним стилей в старых браузерах.

header, section, footer, aside, nav, article {
 display: block; /* Блочный элемент */
}

CSS по теме

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.