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

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

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

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

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

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

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

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

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

Оглавление

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

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

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

Оглавление

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

Подключение собственных шрифтов

Можно под­клю­чить к стра­нице свой файл шрифта. Кон­струк­ция @font-face объ­яв­ляет бра­у­зеру новый шрифт, его назва­ние, фор­мат и путь до файла.

Если кача­ете шрифт из интер­нета — убе­ди­тесь, что у вас есть лицен­зия для исполь­зо­ва­ния в вебе. Для неко­то­рых шриф­тов веб‑лицен­зия бесплатна.

Крайне не сове­туем исполь­зо­вать «пират­ские» шрифты и шрифты, в пра­вах исполь­зо­ва­ния кото­рых вы не уве­рены. Это может обер­нуться не только репу­та­ци­он­ными поте­рями, но и реаль­ным судеб­ным раз­би­ра­тель­ством — круп­ные шриф­то­вые ком­па­нии сегодня активно мони­то­рят веб на пред­мет непра­во­мер­ного исполь­зо­ва­ния своих шрифтов.

@font-face {
  font-family: 'My Custom Font'; /* Это название будет использоваться для применения шрифта */
  src: url('fonts/myCustomFont.woff2') format('woff2'); 
  /* Путь до файла шрифта с указанием формата — рядом с ЦСС-файлом в папке fonts */
}

/* Для начертаний конструкция дублируется, но уже с указанием другого файла и нужного font-weight, название остаётся без изменений */
@font-face {
  font-family: 'My Custom Font';
  src: url('fonts/myCustomFont-Light.woff2') format('woff2');
  font-weight: 100;
}

/* Используем объявленный шрифт на странице */
body {
  font-family: 'My Custom Font', sans-serif;
  font-weight: 100;
}

У подключения собственных шрифтов есть много нюансов, выходящих за рамки этой книги. Перед подключением ознакомьтесь с документацией: @font‑face

Подключение собственных шрифтов

Можно подключить к странице свой файл шрифта. Конструкция @font-face объявляет браузеру новый шрифт, его название, формат и путь до файла.

Если качаете шрифт из интернета — убедитесь, что у вас есть лицензия для использования в вебе. Для некоторых шрифтов веб‑лицензия бесплатна.

Крайне не советуем использовать «пиратские» шрифты и шрифты, в правах использования которых вы не уверены. Это может обернуться не только репутационными потерями, но и реальным судебным разбирательством — крупные шрифтовые компании сегодня активно мониторят веб на предмет неправомерного использования своих шрифтов.

@font-face {
  font-family: 'My Custom Font'; /* Это название будет использоваться для применения шрифта */
  src: url('fonts/myCustomFont.woff2') format('woff2'); 
  /* Путь до файла шрифта с указанием формата — рядом с ЦСС-файлом в папке fonts */
}

/* Для начертаний конструкция дублируется, но уже с указанием другого файла и нужного font-weight, название остаётся без изменений */
@font-face {
  font-family: 'My Custom Font';
  src: url('fonts/myCustomFont-Light.woff2') format('woff2');
  font-weight: 100;
}

/* Используем объявленный шрифт на странице */
body {
  font-family: 'My Custom Font', sans-serif;
  font-weight: 100;
}

У подключения собственных шрифтов есть много нюансов, выходящих за рамки этой книги. Перед подключением ознакомьтесь с документацией: @font‑face

Единицы измерения размеров

В ЦСС еди­ницы изме­ре­ния бывают отно­си­тель­ными и абсо­лют­ными. Отно­си­тель­ные счи­та­ются отно­си­тельно чего‑то ещё:

  • em — отно­си­тельно кегля родителя;

  • rem — отно­си­тельно кегля у <html>;

  • vw — отно­си­тельно ширины экрана, 1vw — 1% ширины экрана;

  • vh — отно­си­тельно высоты экрана, 1vh — 1% высоты экрана;

  • % — отно­си­тельно зна­че­ния такого же свой­ства роди­теля, но с ред­кими исключениями.

Напри­мер, width: 50% задаст ширину рав­ную поло­вине ширины роди­теля. С дру­гой сто­роны, margin-left: 25% задаст левый отступ рав­ный чет­верти от ширины роди­теля, а не от его margin-left.

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

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

Единицы измерения размеров

В ЦСС единицы измерения бывают относительными и абсолютными. Относительные считаются относительно чего‑то ещё:

  • em — относительно кегля родителя;

  • rem — относительно кегля у <html>;

  • vw — относительно ширины экрана, 1vw — 1% ширины экрана;

  • vh — относительно высоты экрана, 1vh — 1% высоты экрана;

  • % — относительно значения такого же свойства родителя, но с редкими исключениями.

Например, width: 50% задаст ширину равную половине ширины родителя. С другой стороны, margin-left: 25% задаст левый отступ равный четверти от ширины родителя, а не от его margin-left.

Абсолютные единицы измерения привязаны к конкретным размерам: 1cm на печати — это один «физический» сантиметр в реальном мире, 1px на экране — это один виртуальный пиксель вашего экрана.

Большая часть абсолютных единиц измерения используется при выводе страницы на печать: для вывода на экран сантиметры и дюймы конвертируются в пиксели и никогда не совпадают с реальными физическими единицами. Поэтому для указания точных и конкретных размеров на экране вы будете использовать пиксели, px.

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

Кегль экран­ного тек­ста обычно лежит в диа­па­зоне 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

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