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

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

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

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

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

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

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

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

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

Оглавление

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

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

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

Оглавление

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

position: absolute

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

Так в при­мере выше мы исполь­зуем псевдо‑эле­мент ::before, чтобы доба­вить верх­нюю линейку к меню, и ::after, чтобы доба­вить ниж­нюю линейку и звёз­дочку к пункту меню.

Также обра­тите вни­ма­ние на отри­ца­тель­ные коор­ди­наты: с помо­щью абсо­лют­ного пози­ци­о­ни­ро­ва­ния эле­менты можно рас­тя­ги­вать и выно­сить за пре­делы контейнера.

nav {
  /* Абсолютно спозиционированные линейки
    будут отсчитывать свои координаты от меню */
  position: relative;
  /* Добавляем поля сверху-снизу */
  padding: 0 8px;
}

nav::before,
nav::after {
  /* Используем псевдо-элементы в качестве линеек:
    даём им высоту и фон */
  content: '';
  height: 1px;
  background: rgba(0, 0, 0, .07);
  /* Растягиваем линейки от края до края без полей */
  position: absolute;
  left: -8px;
  right: -8px;
}

nav::before {
  /* Первую линейку ставим над меню */
  top: 0;
}

nav::after {
  /* Вторую линейку ставим под меню */
  bottom: -4px;
}

nav li:nth-child(3) {
  /* У «Домов» будет свой особенный значок */
  position: relative;
}

nav li:nth-child(3)::after {
  /* Добавляем звёздочку перед «Домами» */
  content: '★';
  color: red;
  /* Ставим её перед текстом */
  position: absolute;
  right: 100%;
  margin-right: 1px;
}

position: absolute

Абсолютное позиционирование используют, когда нужно что‑то вытащить из потока и переставить в другое место: поставить в угол, на поля или по центру. Кроме того, абсолютное позиционирование часто используют в паре с псевдо‑элементами: например, для добавления линеек, маркеров или подписей.

Так в примере выше мы используем псевдо‑элемент ::before, чтобы добавить верхнюю линейку к меню, и ::after, чтобы добавить нижнюю линейку и звёздочку к пункту меню.

Также обратите внимание на отрицательные координаты: с помощью абсолютного позиционирования элементы можно растягивать и выносить за пределы контейнера.

nav {
  /* Абсолютно спозиционированные линейки
    будут отсчитывать свои координаты от меню */
  position: relative;
  /* Добавляем поля сверху-снизу */
  padding: 0 8px;
}

nav::before,
nav::after {
  /* Используем псевдо-элементы в качестве линеек:
    даём им высоту и фон */
  content: '';
  height: 1px;
  background: rgba(0, 0, 0, .07);
  /* Растягиваем линейки от края до края без полей */
  position: absolute;
  left: -8px;
  right: -8px;
}

nav::before {
  /* Первую линейку ставим над меню */
  top: 0;
}

nav::after {
  /* Вторую линейку ставим под меню */
  bottom: -4px;
}

nav li:nth-child(3) {
  /* У «Домов» будет свой особенный значок */
  position: relative;
}

nav li:nth-child(3)::after {
  /* Добавляем звёздочку перед «Домами» */
  content: '★';
  color: red;
  /* Ставим её перед текстом */
  position: absolute;
  right: 100%;
  margin-right: 1px;
}

position: fixed и sticky

Фик­си­ро­ван­ное пози­ци­о­ни­ро­ва­ние исполь­зуют для штук, кото­рые все­гда должны быть в обла­сти види­мо­сти: кнопка «Зака­зать дизайн», диа­лог в Чатре или сооб­ще­ние об исполь­зо­ва­нии кук на сайте.

.fixed {
  position: fixed;
  left: 20px;
  bottom: 20px;
}

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

.sticky {
  position: sticky;
  top: 20px;
}

position: fixed и sticky

Фиксированное позиционирование используют для штук, которые всегда должны быть в области видимости: кнопка «Заказать дизайн», диалог в Чатре или сообщение об использовании кук на сайте.

.fixed {
  position: fixed;
  left: 20px;
  bottom: 20px;
}

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

.sticky {
  position: sticky;
  top: 20px;
}
Кто такой? Чем зна­ме­нит?Я вели­кий ком­би­на­тор, идей­ный борец за денеж­ные знаки.Кроме того, я знаю четы­ре­ста срав­ни­тельно чест­ных спо­соба отъ­ёма денег.АферыВ городе Арба­тове выдал себя за сына лей­те­нанта Шмидта и полу­чил от пред­се­да­теля гор­ис­пол­кома неболь­шую мате­ри­аль­ную помощь.

Флоаты

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

Фло­аты исполь­зуют редко, чаще всего, чтобы задать кар­тинке обте­ка­ние текстом:

<section>
  <img src="ostap.jpg">

  <h3>Кто такой? Чем знаменит?</h3>
  <p>
     Я великий комбинатор,
     идейный борец за денежные знаки.
  </p>
  <p>
     Кроме того, я знаю четыреста сравнительно честных
     способа отъёма денег.
  </p>
</section>
img {
  /* Прижимаем картинку вправо */
  float: right;
  /* Фиксируем высоту картинки */
  height: 8em;
  width: auto;
  /* Добавляем отступ слева,
    чтобы текст не влипал в иллюстрацию */
  margin-left: 1em;
}

Давным‑давно разработчики «хакали» ЦСС, создавая колоночную вёрстку на флоатах и маржинах:

Кто такой? Чем знаменит?Я великий комбинатор, идейный борец за денежные знаки.Кроме того, я знаю четыреста сравнительно честных способа отъёма денег.АферыВ городе Арбатове выдал себя за сына лейтенанта Шмидта и получил от председателя горисполкома небольшую материальную помощь.

Флоаты

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

Флоаты используют редко, чаще всего, чтобы задать картинке обтекание текстом:

<section>
  <img src="ostap.jpg">

  <h3>Кто такой? Чем знаменит?</h3>
  <p>
     Я великий комбинатор,
     идейный борец за денежные знаки.
  </p>
  <p>
     Кроме того, я знаю четыреста сравнительно честных
     способа отъёма денег.
  </p>
</section>
img {
  /* Прижимаем картинку вправо */
  float: right;
  /* Фиксируем высоту картинки */
  height: 8em;
  width: auto;
  /* Добавляем отступ слева,
    чтобы текст не влипал в иллюстрацию */
  margin-left: 1em;
}

Давным‑давно разработчики «хакали» ЦСС, создавая колоночную вёрстку на флоатах и маржинах:

Флексбоксы

Флек­с­бокс — это набор ЦСС‑свойств для гиб­кой рас­кладки эле­мен­тов на стра­нице или в отдель­ном блоке.

Чтобы вклю­чить флек­с­бокс, нужно задать эле­менту display: flex. Тогда эле­мент ста­нет флекс‑кон­тей­не­ром, а все вло­жен­ные в него эле­менты ста­нут флекс‑элементами.

Отно­си­тесь к флекс‑кон­тей­неру, как к пря­мо­уголь­ному фор­мату, внутри кото­рого можно рас­по­ло­жить несколько эле­мен­тов по стро­кам или колон­кам, выров­няв их по одной из сто­рон или рас­пре­де­лив по формату.

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

<div class="columns">
  <div>Первая</div>
  <div>Вторая</div>
  <div>Третья</div>
</div>

Доба­вим колон­кам цвет и отступы для наглядности:

/* Составной селектор > * выделяет
   любые элементы (*), находящиеся
   непосредственно в .columns (>) */
.columns > * {
  background: #e5f5ff;
  padding: 9px;
}

Вклю­чим флексбокс:

.columns {
  display: flex;
}

Рав­но­мерно рас­пре­де­лим колонки, отжав первую и послед­нюю к краям:

.columns {
  display: flex;
  justify-content: space-between;
}
Пер­вая
Вто­рая
Тре­тья
Пер­вая
Вто­рая
Тре­тья
Пер­вая
Вто­рая
Тре­тья
Пер­вая
Вто­рая
Тре­тья
Первая
Вторая
Третья
Первая
Вторая
Третья
Первая
Вторая
Третья
Первая
Вторая
Третья

Флексбоксы

Флексбокс — это набор ЦСС‑свойств для гибкой раскладки элементов на странице или в отдельном блоке.

Чтобы включить флексбокс, нужно задать элементу display: flex. Тогда элемент станет флекс‑контейнером, а все вложенные в него элементы станут флекс‑элементами.

Относитесь к флекс‑контейнеру, как к прямоугольному формату, внутри которого можно расположить несколько элементов по строкам или колонкам, выровняв их по одной из сторон или распределив по формату.

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

<div class="columns">
  <div>Первая</div>
  <div>Вторая</div>
  <div>Третья</div>
</div>

Добавим колонкам цвет и отступы для наглядности:

/* Составной селектор > * выделяет
   любые элементы (*), находящиеся
   непосредственно в .columns (>) */
.columns > * {
  background: #e5f5ff;
  padding: 9px;
}

Включим флексбокс:

.columns {
  display: flex;
}

Равномерно распределим колонки, отжав первую и последнюю к краям:

.columns {
  display: flex;
  justify-content: space-between;
}

🕑

Глав­ная ось →

Попе­реч­ная ось →

Серая область — флекс‑контейнер, «кубики» внутри — флекс‑элементы

Клю­че­вая идея рас­кладки флек­с­бок­сами — вве­де­ние глав­ной и попе­реч­ной осей, по кото­рым и будут рас­кла­ды­ваться флекс‑элементы.

Ключевая идея раскладки флексбоксами — введение главной и поперечной осей, по которым и будут раскладываться флекс‑элементы.

🕑

Главная ось →

Поперечная ось →

Серая область — флекс‑контейнер, «кубики» внутри — флекс‑элементы

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