🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру

Удобно листать не только прокруткой, но и клавишами‑стрелками:

 
между важными местами
Shift
между
разворотами
Васи­лий Полов­нёв, Игорь Пет­ров

ХТМЛ.
Вёрстка сайтов

Изда­тель­ство Бюро Гор­бу­нова
2021
Василий Половнёв, Игорь Петров

ХТМЛ.
Вёрстка сайтов

Издательство Бюро Горбунова
2021
удк 004.42
ббк З973.42
П52
Васи­лий Полов­нёв, Игорь Пет­ров
П52
ХТМЛ. Вёрстка сай­тов для дизай­не­ров, редак­то­ров и руко­во­ди­те­лей.—
М.: Изд‑во Бюро Гор­бу­нова, 2021

Эта книга — поша­го­вая инструк­ция по вёрстке сай­тов на язы­ках ХТМЛ и ЦСС. Вы узна­ете не только как свер­стать сайт, но и как опуб­ли­ко­вать его в интер­нете, настро­ить кра­си­вый шаринг в соц­сети и под­клю­чить системы аналитики.

Отдель­ный раз­дел книги посвя­щён работе с вер­сталь­щи­ком: как ста­вить задачи, полу­чать пред­ска­зу­е­мый резуль­тат и пра­вильно при­ни­мать и внед­рять вёрстку.

Оглавление

удк 004.42
ббк З973.42
П52
П52
Василий Половнёв, Игорь Петров
ХТМЛ. Вёрстка сайтов для дизайнеров, редакторов и руководителей.—
М.: Изд‑во Бюро Горбунова, 2021

Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.

Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.

Оглавление

Скрыто 30 разворотов

В «рези­но­вой» вёрстке дизай­нер задаёт не только форму кон­тей­нера для тек­ста, но и пра­вила, по кото­рым она меня­ется в зави­си­мо­сти от раз­ме­ров окна и экрана.

Кегль экран­ного тек­ста обычно лежит в диа­па­зоне 12…16 пунк­тов, а интер­ли­ньяж — 1,2…1,4 от зна­че­ния кегля

Кегль и интерлиньяж

В ЦСС кегль зада­ётся свой­ством font-size, а интер­ли­ньяж — свой­ством line-height. Их зна­че­ния могут быть фик­си­ро­ван­ными — px, pt, in, cm, или отно­си­тель­ными — %, emrem:

body {
  font-size: 20px;
  /* Высота строки посчитается от кегля:
     20px * 1.25 = 25px */
  line-height: 1.25;
}

.sidenote {
  /* Кегль посчитается от кегля родителя:
     20px * 0.75 = 15px */
  font-size: .75em;
  /* Высота строки посчитается от кегля элемента:
     15px * 1.2 = 18px */
  line-height: 120%;
}

Обратите внимание: значения в рамочке в этой книге можно менять, попробуйте их подвигать

В «резиновой» вёрстке дизайнер задаёт не только форму контейнера для текста, но и правила, по которым она меняется в зависимости от размеров окна и экрана.

Кегль экранного текста обычно лежит в диапазоне 12…16 пунктов, а интерлиньяж — 1,2…1,4 от значения кегля

Кегль и интерлиньяж

В ЦСС кегль задаётся свойством font-size, а интерлиньяж — свойством line-height. Их значения могут быть фиксированными — px, pt, in, cm, или относительными — %, emrem:

body {
  font-size: 20px;
  /* Высота строки посчитается от кегля:
     20px * 1.25 = 25px */
  line-height: 1.25;
}

.sidenote {
  /* Кегль посчитается от кегля родителя:
     20px * 0.75 = 15px */
  font-size: .75em;
  /* Высота строки посчитается от кегля элемента:
     15px * 1.2 = 18px */
  line-height: 120%;
}

Обратите внимание: значения в рамочке в этой книге можно менять, попробуйте их подвигать

Обычно кегль основ­ного тек­ста задают на самом высо­ком уровне в :root или body, а для осталь­ных тек­сто­вых эле­мен­тов исполь­зуют rem или em:

/* :root — хитрый селектор, указывающий на корневой, самый высокий, элемент документа. По сути, :root идентичен <html> */
:root {
  font-size: 18px;
  /* Высота строки посчитается от кегля:
     18px * 1.25 = 22.5px */
  line-height: 1.25
}

h1 {
  /* Кегль посчитается от кегля в :root:
     18px * 2.666 = 48px */
  font-size: 2.666rem;
  /* Высота строки посчитается от кегля:
     48px * 1 = 48px */
  line-height: 1;
}

h2 {
  /* Кегль посчитается от кегля в :root:
     18px * 1.722 = 31px */
  font-size: 1.722rem;
  /* Высота строки посчитается от кегля:
     41px * 0.935 = 38px */
  line-height: .935;
}

h3 {
  font-size: 1rem;
  /* Высота строки унаследуется от :root */
  line-height: inherit;
}

Полу­ча­ется система кег­лей и интер­ли­нья­жей, зави­ся­щая от един­ствен­ного базо­вого кегля, ука­зан­ного в :root. Поме­няли кегль в :root, поме­ня­лись кегли и интер­ли­ньяжи у тек­ста и заго­лов­ков, сохра­нив те же про­пор­ции. Легко менять при пере­ходе к мобиль­ной или деск­топ­ной версии.

Текстовая страница

Приве­дём реко­мен­да­ции по вёрст­ке экран­ной тек­сто­вой стра­ни­цы со ста­тьёй, замет­кой, книж­ной гла­вой или тек­стом о компании.

В отли­чие от модуль­ной стра­ни­цы, состо­я­щей из отдель­ных бло­ков‑ато­мов, тек­сто­вая стра­ни­ца пред­став­ля­ет собой поток для после­до­ва­тель­но­го чте­ния — напри­мер как этот раз­во­рот. Подоб­но длин­ной моле­ку­ле поли­ме­ра, тек­сто­вая стра­ни­ца вклю­ча­ет в себя раз­но­об­раз­ные эле­мен­ты в сво­бод­ном поряд­ке: под­за­го­лов­ки, спис­ки, таб­ли­цы и иллюстрации.

Подзаголовки

Основ­ной текст име­ет один глав­ный заго­ло­вок пер­во­го уров­ня и дро­бит­ся на части с помо­щью подзаголовков.

Кегль заго­лов­ков вто­ро­го уров­ня обыч­но уве­ли­чен по срав­не­нию с основ­ным тек­стом. Перед таки­ми заго­лов­ка­ми про­пус­ка­ют при­мер­но две стро­ки, после дела­ют отступ, рав­ный отступу швей­цар­ского абзаца — как у над­пи­си «Подза­го­лов­ки» на этом развороте.

Заголов­ки тре­тье­го уровня

Заголов­ки тре­тье­го уров­ня удоб­но наби­рать полу­жир­ным основ­но­го кег­ля и не отби­вать от после­ду­ю­ще­го тек­ста, как над колон­ка­ми тек­ста на раз­во­роте бренд­бука Скайсканера.

Текстовая страница

Приве­дём реко­мен­да­ции по вёрст­ке экран­ной тек­сто­вой стра­ни­цы со ста­тьёй, замет­кой, книж­ной гла­вой или тек­стом о компании.

В отли­чие от модуль­ной стра­ни­цы, состо­я­щей из отдель­ных бло­ков‑ато­мов, тек­сто­вая стра­ни­ца пред­став­ля­ет собой поток для после­до­ва­тель­но­го чте­ния — напри­мер как этот раз­во­рот. Подоб­но длин­ной моле­ку­ле поли­ме­ра, тек­сто­вая стра­ни­ца вклю­ча­ет в себя раз­но­об­раз­ные эле­мен­ты в сво­бод­ном поряд­ке: под­за­го­лов­ки, спис­ки, таб­ли­цы и иллюстрации.

Подзаголовки

Основ­ной текст име­ет один глав­ный заго­ло­вок пер­во­го уров­ня и дро­бит­ся на части с помо­щью подзаголовков.

Кегль заго­лов­ков вто­ро­го уров­ня обыч­но уве­ли­чен по срав­не­нию с основ­ным тек­стом. Перед таки­ми заго­лов­ка­ми про­пус­ка­ют при­мер­но две стро­ки, после дела­ют отступ, рав­ный отступу швей­цар­ского абзаца — как у над­пи­си «Подза­го­лов­ки» на этом развороте.

Заголов­ки тре­тье­го уровня

Заголов­ки тре­тье­го уров­ня удоб­но наби­рать полу­жир­ным основ­но­го кег­ля и не отби­вать от после­ду­ю­ще­го тек­ста, как над колон­ка­ми тек­ста на раз­во­роте бренд­бука Скайсканера.

Обычно кегль основного текста задают на самом высоком уровне в :root или body, а для остальных текстовых элементов используют rem или em:

/* :root — хитрый селектор, указывающий на корневой, самый высокий, элемент документа. По сути, :root идентичен <html> */
:root {
  font-size: 18px;
  /* Высота строки посчитается от кегля:
     18px * 1.25 = 22.5px */
  line-height: 1.25
}

h1 {
  /* Кегль посчитается от кегля в :root:
     18px * 2.666 = 48px */
  font-size: 2.666rem;
  /* Высота строки посчитается от кегля:
     48px * 1 = 48px */
  line-height: 1;
}

h2 {
  /* Кегль посчитается от кегля в :root:
     18px * 1.722 = 31px */
  font-size: 1.722rem;
  /* Высота строки посчитается от кегля:
     41px * 0.935 = 38px */
  line-height: .935;
}

h3 {
  font-size: 1rem;
  /* Высота строки унаследуется от :root */
  line-height: inherit;
}

Получается система кеглей и интерлиньяжей, зависящая от единственного базового кегля, указанного в :root. Поменяли кегль в :root, поменялись кегли и интерлиньяжи у текста и заголовков, сохранив те же пропорции. Легко менять при переходе к мобильной или десктопной версии.

Лайфхак: em или rem?

И em, и rem — отно­си­тель­ные вели­чины. Раз­ница между ними в том, что em счи­та­ется отно­си­тельно кегля роди­тель­ского эле­мента, а rem — отно­си­тельно кор­не­вого. Сравните:

 20px
1.2em
20px×1.224px
0.625em 24px×0.62515px
0.8em
15px×0.812px
 20px
1.2rem
20px×1.224px
0.625rem
20px×0.62512.5px
0.8rem
20px×0.816px

Для неза­ви­си­мых ком­по­нен­тов лучше подой­дёт rem: не при­дётся бес­по­ко­иться, что роди­тель­ский эле­мент повли­яет на кегль в ком­по­ненте. Если вы, нао­бо­рот, хотите, чтобы вло­жен­ность вли­яла на кегль, берите em.

При исполь­зо­ва­нии rem кегль на кор­не­вом эле­менте (:root) лучше не зада­вать в пик­се­лях. Бра­у­зеры поз­во­ляют настро­ить базо­вый кегль тек­ста. Если задать кегль в пик­се­лях, эта настройка не сра­бо­тает, cла­бо­ви­дя­щим, воз­можно, при­дётся зумить страницу.

Вме­сто этого запом­ните, что кегль по умол­ча­нию во всех бра­у­зе­рах — 16 пик­се­лей, и зада­вайте базо­вый отно­си­тельно него. То есть, вме­сто font-size: 18px — font-size: 1.125em

Лайфхак: em или rem?

И em, и rem — относительные величины. Разница между ними в том, что em считается относительно кегля родительского элемента, а rem — относительно корневого. Сравните:

 20px
1.2em
20px×1.224px
0.625em 24px×0.62515px
0.8em
15px×0.812px
 20px
1.2rem
20px×1.224px
0.625rem
20px×0.62512.5px
0.8rem
20px×0.816px

Для независимых компонентов лучше подойдёт rem: не придётся беспокоиться, что родительский элемент повлияет на кегль в компоненте. Если вы, наоборот, хотите, чтобы вложенность влияла на кегль, берите em.

При использовании rem кегль на корневом элементе (:root) лучше не задавать в пикселях. Браузеры позволяют настроить базовый кегль текста. Если задать кегль в пикселях, эта настройка не сработает, cлабовидящим, возможно, придётся зумить страницу.

Вместо этого запомните, что кегль по умолчанию во всех браузерах — 16 пикселей, и задавайте базовый относительно него. То есть, вместо font-size: 18px — font-size: 1.125em

Вертикальный ритм

Кегль и интер­ли­ньяж задают вер­ти­каль­ный ритм в тек­сте. Также на него вли­яют отступы вокруг тек­сто­вых элементов.

Обно­вим отступы поста в блоге, исполь­зуя реко­мен­да­ции по вёрстке тек­сто­вой стра­ницы из книги «Типо­гра­фика и вёрстка».

Нач­нём с разметки:

<!-- article — стандартный тег, задающий самостоятельное содержимое страницы, которое можно использовать отдельно: новость, статью или пост в блоге -->
<article>
  <h1>Основной текст</h1>
  <p>Колонка…</p>

  <p>Текст в основной колонке…</p>

  <p>Текст, выровненный влево…</p>

  <p>Текст дробится на абзацы…</p>
</article>

Зада­дим шрифты, кегль и интер­ли­ньяж основ­ного текста:

:root {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 1em; /* 16px по умолчанию */
  line-height: 1.3em;
}

h1,
h2 {
  font-family: Georgia, Times, Times New Roman, serif;
}

Сбро­сим отступы по умол­ча­нию и огра­ни­чим ширину тек­сто­вой колонки:

:root {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 1em;
  line-height: 1.3em;
}

h1,
h2 {
  font-family: Georgia, Times, Times New Roman, serif;
}

h1,
h2,
h3,
p {
  margin: 0;
}

article {
  max-width: 70%;
}

Настроим межа­б­зац­ный отступ:

article {
  max-width: 70%;
}

/* Селектор * + p выделяет абзацы, идущие после любых элементов */
* + p {
  margin-top: .825rem;
}

И настроим заго­ловки пер­вого уровня:

article {
  max-width: 70%;
}

h1 {
  font-size: 2.25rem;
  line-height: 1.3em;
  font-weight: bold;
}

h1 + p {
  margin-top: 3rem;
}

* + p {
  margin-top: .825rem;
}

Вертикальный ритм

Кегль и интерлиньяж задают вертикальный ритм в тексте. Также на него влияют отступы вокруг текстовых элементов.

Обновим отступы поста в блоге, используя рекомендации по вёрстке текстовой страницы из книги «Типографика и вёрстка».

Начнём с разметки:

<!-- article — стандартный тег, задающий самостоятельное содержимое страницы, которое можно использовать отдельно: новость, статью или пост в блоге -->
<article>
  <h1>Основной текст</h1>
  <p>Колонка…</p>

  <p>Текст в основной колонке…</p>

  <p>Текст, выровненный влево…</p>

  <p>Текст дробится на абзацы…</p>
</article>

Зададим шрифты, кегль и интерлиньяж основного текста:

:root {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 1em; /* 16px по умолчанию */
  line-height: 1.3em;
}

h1,
h2 {
  font-family: Georgia, Times, Times New Roman, serif;
}

Сбросим отступы по умолчанию и ограничим ширину текстовой колонки:

:root {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 1em;
  line-height: 1.3em;
}

h1,
h2 {
  font-family: Georgia, Times, Times New Roman, serif;
}

h1,
h2,
h3,
p {
  margin: 0;
}

article {
  max-width: 70%;
}

Настроим межабзацный отступ:

article {
  max-width: 70%;
}

/* Селектор * + p выделяет абзацы, идущие после любых элементов */
* + p {
  margin-top: .825rem;
}

И настроим заголовки первого уровня:

article {
  max-width: 70%;
}

h1 {
  font-size: 2.25rem;
  line-height: 1.3em;
  font-weight: bold;
}

h1 + p {
  margin-top: 3rem;
}

* + p {
  margin-top: .825rem;
}

Настроим отступы у под­за­го­лов­ков. Доба­вим их в разметку:

<article>
  …
  <p>Основной текст…</p>

  <h2>Подзаголовки</h2>
  <p>Кегль заголовков второго уровня…</p>

  <h3>Заголовки третьего уровня</h3>
  <p>Заголовки третьего уровня…</p>
  <p>Подзаголовки в иерархии…</p>
</article>

Настроим заго­ловки вто­рого уровня:

h1 + p {
  margin-top: 3rem;
}

h2 {
  font-size: 2rem;
  line-height: 1.3em;
  /* Сделаем подзаголовки нежирными */
  font-weight: normal;
}

* + h2 {
  margin-top: 1.25rem;
}

h2 + p {
  margin-top: .5rem;
}

* + p {
  margin-top: .825rem;
}

И обно­вим заго­ловки тре­тьего уровня:

h2 + p {
  margin-top: .5rem;
}

h3 {
  font-size: 1rem;
  line-height: 1.3em;
  font-weight: bold;
}

* + h3 {
  margin-top: 1.75rem;
}

h3 + p {
  margin-top: 0;
}

* + p {
  margin-top: .825rem;
}

Настроим отступы у подзаголовков. Добавим их в разметку:

<article>
  …
  <p>Основной текст…</p>

  <h2>Подзаголовки</h2>
  <p>Кегль заголовков второго уровня…</p>

  <h3>Заголовки третьего уровня</h3>
  <p>Заголовки третьего уровня…</p>
  <p>Подзаголовки в иерархии…</p>
</article>

Настроим заголовки второго уровня:

h1 + p {
  margin-top: 3rem;
}

h2 {
  font-size: 2rem;
  line-height: 1.3em;
  /* Сделаем подзаголовки нежирными */
  font-weight: normal;
}

* + h2 {
  margin-top: 1.25rem;
}

h2 + p {
  margin-top: .5rem;
}

* + p {
  margin-top: .825rem;
}

И обновим заголовки третьего уровня:

h2 + p {
  margin-top: .5rem;
}

h3 {
  font-size: 1rem;
  line-height: 1.3em;
  font-weight: bold;
}

* + h3 {
  margin-top: 1.75rem;
}

h3 + p {
  margin-top: 0;
}

* + p {
  margin-top: .825rem;
}
Скрыто 185 разворотов