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

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

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

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

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

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

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

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

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

Оглавление

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

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

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

Оглавление

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

Тест

Выберите верные утверждения о раскладке элементов с помощью position.

absolute располагает элемент по заданным координатам относительно ближайшего родителя с position: relative или относительно body, если родителей с position: relative нет
fixed располагает элемент над страницей, элемент зависает над ней в указанных координатах
static создаёт контекст, в котором будут абсолютно позиционироваться другие элементы
sticky значение по умолчанию, элементы просто выстраиваются друг под другом

Элементы с position: absolute и fixed перестают занимать место в потоке элементов и переносятся в указанные координаты. При этом элемент с position: absolute прокручивается вместе со страницей, а элемент с position: fixed висит над ней

Что в этой книге считается ключевой идеей раскладки флексбоксами?

Управление выравниванием элементов через комментарии разработчикам
Флексбокс фиксирует бюджет и срок сдачи вёрстки, оставляя гибким функционал
Введение главной и поперечной осей, по которым раскладываются флекс‑элементы
Автоматическая раскладка элементов «кирпичной кладкой», как в Пинтересе
Флекс‑элементы перестают занимать место и перемещаются к заданным координатам
Введение направляющих и ячеек, в которые будет раскладываться содержимое
Разработчики придумали флексбоксы чтобы «флексить» — хвастаться своей вёрсткой перед другими

Флексбокс заставляет вложенные элементы раскладываться и выравниваться по двум осям: главной и поперечной

Каким свойством включается раскладка флексбоксами внутри элемента?

flex: 1
flex: on
flexbox: true
display: flex
display: flexbox
visibility: flex
align-items: flex

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

Выберите верные утверждения о назначении ЦСС‑свойств.

flex-direction управляет направлением главной оси
flex-direction управляет направлением поперечной оси
justify-content управляет расположением элементов на поперечной оси
justify-content управляет расположением элементов на главной оси
align-items управляет высотой элементов
align-items управляет расположением элементов на поперечной оси
align-items управляет расположением элементов на главной оси

flex‑direction задаёт направление главной оси. justify‑content задаёт выравнивание по главной оси, а align‑items — по поперечной

Какое свойство задаёт выравнивание флекс‑элементам по отдельности на поперечной оси?

align-self
justify-content
self-align
element-position
list-style-position

align‑self отвечает за расположение отдельного элемент на поперечной оси

Что по умолчанию происходит с элементами, не вмещающимися во флекс‑контейнер?

Исчезают вместе с контейнером
Переносятся на следующую строку
Переполняют контейнер
Вызывают ошибку в браузере с просьбой отправить баг‑репорт разработчикам
Переносятся в следующий флекс‑контейнер на странице

По умолчанию флекс‑контейнер однострочный: не вмещающиеся элементы переполняют его

За что отвечает свойство align-content?

За выравнивание флекс‑элементов на главной оси
За выключку текста
За размер и выравнивание изображения
За выравнивание строк на поперечной оси в многострочных флекс‑контейнерах
Свойство маркирует содержимое элемента как выражающее определённые политические взгляды

align‑content управляет выравниванием строк в многострочных флекс‑контейнерах

Какими из этих свойств можно задать отступы между флекс‑элементами?

flex-distance
margin
gap
flex-wrap
list-style-position

Свойство margin задаёт внешние отступы любых элементов, а gap управляет отступами элементов внутри флекс‑контейнера

Выберите верные утверждения о назначении ЦСС‑свойств.

flex-basis рекомендует идеальный или предположительный размер элемента по главной оси
flex-basis включает раскладку флексбоксами
flex-basis управляет выравниванием отдельного взятого элемента на главной оси
flex-grow задаёт коэффициент, определяющий, какую долю свободного места в контейнере получит элемент
Совокупность flex-grow флекс‑элементов задаёт пропорцию, в которой они поделят свободное пространство
flex-grow указывает направление, в котором должен увеличиваться элемент
flex-shrink выключает раскладку флексбоксами
flex-shrink сужает флекс‑контейнер, «отжимая» воздух внутри
flex-shrink задаёт коэффициент, определяющий, насколько сильно уменьшится элемент, если в контейнере не хватит места
flex-shrink приказывает элементу исчезнуть из контейнера, если другим элементам понадобится больше места

flex-basis определяет начальный, идеальный размер элемента. Если в контейнере останется свободное место, flex-grow определит, какую его долю получит элемент. Если места не хватит, flex-shrink определит, как сильно элемент уменьшится, чтобы всё вместилось в контейнер

Для чего используют свойство order?

Чтобы призвать все элементы страницы к порядку
Для указания порядка, в котором браузер должен применять стили
Чтобы управлять порядком отдельных флекс‑элементов
Для указания номера заказа в CRM, связанного с элементом
Чтобы приказать флекс‑элементам вырасти в указанном направлении

order управляет порядком отдельных флекс‑элементов

Ответьте на все вопросы теста,
чтобы узнать результат.
Результат
↺ Пересдать

Тест

Выберите верные утверждения о раскладке элементов с помощью position.

absolute располагает элемент по заданным координатам относительно ближайшего родителя с position: relative или относительно body, если родителей с position: relative нет
fixed располагает элемент над страницей, элемент зависает над ней в указанных координатах
static создаёт контекст, в котором будут абсолютно позиционироваться другие элементы
sticky значение по умолчанию, элементы просто выстраиваются друг под другом

Элементы с position: absolute и fixed перестают занимать место в потоке элементов и переносятся в указанные координаты. При этом элемент с position: absolute прокручивается вместе со страницей, а элемент с position: fixed висит над ней

Что в этой книге считается ключевой идеей раскладки флексбоксами?

Управление выравниванием элементов через комментарии разработчикам
Флексбокс фиксирует бюджет и срок сдачи вёрстки, оставляя гибким функционал
Введение главной и поперечной осей, по которым раскладываются флекс‑элементы
Автоматическая раскладка элементов «кирпичной кладкой», как в Пинтересе
Флекс‑элементы перестают занимать место и перемещаются к заданным координатам
Введение направляющих и ячеек, в которые будет раскладываться содержимое
Разработчики придумали флексбоксы чтобы «флексить» — хвастаться своей вёрсткой перед другими

Флексбокс заставляет вложенные элементы раскладываться и выравниваться по двум осям: главной и поперечной

Каким свойством включается раскладка флексбоксами внутри элемента?

flex: 1
flex: on
flexbox: true
display: flex
display: flexbox
visibility: flex
align-items: flex

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

Выберите верные утверждения о назначении ЦСС‑свойств.

flex-direction управляет направлением главной оси
flex-direction управляет направлением поперечной оси
justify-content управляет расположением элементов на поперечной оси
justify-content управляет расположением элементов на главной оси
align-items управляет высотой элементов
align-items управляет расположением элементов на поперечной оси
align-items управляет расположением элементов на главной оси

flex‑direction задаёт направление главной оси. justify‑content задаёт выравнивание по главной оси, а align‑items — по поперечной

Какое свойство задаёт выравнивание флекс‑элементам по отдельности на поперечной оси?

align-self
justify-content
self-align
element-position
list-style-position

align‑self отвечает за расположение отдельного элемент на поперечной оси

Что по умолчанию происходит с элементами, не вмещающимися во флекс‑контейнер?

Исчезают вместе с контейнером
Переносятся на следующую строку
Переполняют контейнер
Вызывают ошибку в браузере с просьбой отправить баг‑репорт разработчикам
Переносятся в следующий флекс‑контейнер на странице

По умолчанию флекс‑контейнер однострочный: не вмещающиеся элементы переполняют его

За что отвечает свойство align-content?

За выравнивание флекс‑элементов на главной оси
За выключку текста
За размер и выравнивание изображения
За выравнивание строк на поперечной оси в многострочных флекс‑контейнерах
Свойство маркирует содержимое элемента как выражающее определённые политические взгляды

align‑content управляет выравниванием строк в многострочных флекс‑контейнерах

Какими из этих свойств можно задать отступы между флекс‑элементами?

flex-distance
margin
gap
flex-wrap
list-style-position

Свойство margin задаёт внешние отступы любых элементов, а gap управляет отступами элементов внутри флекс‑контейнера

Выберите верные утверждения о назначении ЦСС‑свойств.

flex-basis рекомендует идеальный или предположительный размер элемента по главной оси
flex-basis включает раскладку флексбоксами
flex-basis управляет выравниванием отдельного взятого элемента на главной оси
flex-grow задаёт коэффициент, определяющий, какую долю свободного места в контейнере получит элемент
Совокупность flex-grow флекс‑элементов задаёт пропорцию, в которой они поделят свободное пространство
flex-grow указывает направление, в котором должен увеличиваться элемент
flex-shrink выключает раскладку флексбоксами
flex-shrink сужает флекс‑контейнер, «отжимая» воздух внутри
flex-shrink задаёт коэффициент, определяющий, насколько сильно уменьшится элемент, если в контейнере не хватит места
flex-shrink приказывает элементу исчезнуть из контейнера, если другим элементам понадобится больше места

flex-basis определяет начальный, идеальный размер элемента. Если в контейнере останется свободное место, flex-grow определит, какую его долю получит элемент. Если места не хватит, flex-shrink определит, как сильно элемент уменьшится, чтобы всё вместилось в контейнер

Для чего используют свойство order?

Чтобы призвать все элементы страницы к порядку
Для указания порядка, в котором браузер должен применять стили
Чтобы управлять порядком отдельных флекс‑элементов
Для указания номера заказа в CRM, связанного с элементом
Чтобы приказать флекс‑элементам вырасти в указанном направлении

order управляет порядком отдельных флекс‑элементов

Ответьте на все вопросы теста, чтобы узнать результат.
Результат
↺ Пересдать

Гриды

CSS grid layout или гриды — это набор свойств для рас­кладки эле­мен­тов на стра­нице или в отдель­ном элементе.

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

Отно­си­тесь к гри­дам, как к пря­мо­уголь­ному фор­мату, внутри кото­рого можно опре­де­лить направ­ля­ю­щие — грид‑линии, задав таким обра­зом колонки и строки, и раз­ло­жить в полу­чив­ши­еся ячейки содержимое.

Нач­нём с раз­метки и направляющих:

<div class="grid"></div>
.grid {
  display: grid;
  grid-template-rows: 200px 100px; /* Задаём горизонтальные направляющие, два ряда высотой в 200 и 100 пк */
  grid-template-columns: 150px 150px 200px; /* Задаём вертикальные направляющие, две колонки шириной 150 пк и одну шириной 200 пк */
  gap: 18px 18px; /* Задаём отступы между рядами и колонками */
}

Доба­вим внутрь несколько эле­мен­тов. Эле­менты заняли три верх­ние ячейки.

<div class="grid">
  <div>Первый элемент</div>
  <div>Второй элемент</div>
  <div>Третий элемент</div>
</div>

Доба­вим ещё один эле­мент, но поста­вим его между пер­выми двумя. Новый эле­мент занял вто­рую ячейку и «вытолк­нул» после­ду­ю­щие эле­менты в ниж­ний ряд.

<div class="grid">
  <div>Первый элемент</div>
  <div>Внезапный элемент</div>
  <div>Второй элемент</div>
  <div>Третий элемент</div>
</div>
 
Пер­вый эле­мент
Вне­зап­ный эле­мент
Вто­рой эле­мент
Тре­тий эле­мент
Первый элемент
Внезапный элемент
Второй элемент
Третий элемент

Гриды

CSS grid layout или гриды — это набор свойств для раскладки элементов на странице или в отдельном элементе.

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

Относитесь к гридам, как к прямоугольному формату, внутри которого можно определить направляющие — грид‑линии, задав таким образом колонки и строки, и разложить в получившиеся ячейки содержимое.

Начнём с разметки и направляющих:

<div class="grid"></div>
.grid {
  display: grid;
  grid-template-rows: 200px 100px; /* Задаём горизонтальные направляющие, два ряда высотой в 200 и 100 пк */
  grid-template-columns: 150px 150px 200px; /* Задаём вертикальные направляющие, две колонки шириной 150 пк и одну шириной 200 пк */
  gap: 18px 18px; /* Задаём отступы между рядами и колонками */
}

Добавим внутрь несколько элементов. Элементы заняли три верхние ячейки.

<div class="grid">
  <div>Первый элемент</div>
  <div>Второй элемент</div>
  <div>Третий элемент</div>
</div>

Добавим ещё один элемент, но поставим его между первыми двумя. Новый элемент занял вторую ячейку и «вытолкнул» последующие элементы в нижний ряд.

<div class="grid">
  <div>Первый элемент</div>
  <div>Внезапный элемент</div>
  <div>Второй элемент</div>
  <div>Третий элемент</div>
</div>
 

За вер­ти­каль­ные направ­ля­ю­щие, а сле­до­ва­тельно, за коли­че­ство и раз­мер коло­нок отве­чает свой­ство grid-template-columns. Зада­ётся в любых вели­чи­нах длины: пик­се­лях, em, rem, vw, vh и про­цен­тах от ширины родителя.

.columns {
  display: grid;
  grid-template-columns: 50px 20% auto; /* Первая колонка получит ширину в 50 пк, вторая — 20%, третья — всё оставшееся пространство */
}

За вертикальные направляющие, а следовательно, за количество и размер колонок отвечает свойство grid-template-columns. Задаётся в любых величинах длины: пикселях, em, rem, vw, vh и процентах от ширины родителя.

.columns {
  display: grid;
  grid-template-columns: 50px 20% auto; /* Первая колонка получит ширину в 50 пк, вторая — 20%, третья — всё оставшееся пространство */
}
1fr

grid‑template‑columns: 1fr создаст колонку на всю ширину контейнера

1fr
1fr

grid‑template‑columns: 1fr 1fr поделит контейнер пополам

2fr
1fr

grid‑template‑columns: 2fr 1fr поделит контейнер в соотношении 2:1

1fr
100px
2fr

grid‑template‑columns: 1fr 100px 2fr выделит второй колонке 100 пк, а оставшееся место поделит между первой и третьей колонкой в соотношении 1:2

Чтобы поде­лить кон­тей­нер на колонки в нуж­ной про­пор­ции, исполь­зуют еди­ницу изме­ре­ния fr (от fraction). Для каж­дой «рези­но­вой» колонки ука­жите её долю в fr отно­си­тельно дру­гих коло­нок, также задан­ных в fr.

Абсо­лют­ные еди­ницы и fr можно сме­ши­вать. В этом слу­чае про­пор­ции посчи­та­ются отно­си­тельно сво­бод­ного места, остав­ше­гося после выде­ле­ния фик­си­ро­ван­ных колонок.

Чтобы поделить контейнер на колонки в нужной пропорции, используют единицу измерения fr (от fraction). Для каждой «резиновой» колонки укажите её долю в fr относительно других колонок, также заданных в fr.

Абсолютные единицы и fr можно смешивать. В этом случае пропорции посчитаются относительно свободного места, оставшегося после выделения фиксированных колонок.

1fr

grid‑template‑columns: 1fr создаст колонку на всю ширину контейнера

1fr
1fr

grid‑template‑columns: 1fr 1fr поделит контейнер пополам

2fr
1fr

grid‑template‑columns: 2fr 1fr поделит контейнер в соотношении 2:1

1fr
100px
2fr

grid‑template‑columns: 1fr 100px 2fr выделит второй колонке 100 пк, а оставшееся место поделит между первой и третьей колонкой в соотношении 1:2

1fr
1fr
1fr
1fr
1fr
1fr

grid‑template‑columns: repeat(6, 1fr) — то же самое, что grid‑template‑columns: 1fr 1fr 1fr 1fr 1fr 1fr

2fr
2fr
2fr
1fr
1fr
1fr

grid‑template‑columns: repeat(3, 2fr) repeat(3, 1fr) поделит контейнер в соотношении 2:2:2:1:1:1

50px
1fr
1fr
1fr
1fr
50px

grid‑template‑columns: 50px repeat(4, 1fr) 50px выделит первой и последней колонке по 50 пк, а оставшееся место поделит поровну между четырьмя колонками

Чтобы не дуб­ли­ро­вать опи­са­ния оди­на­ко­вых коло­нок, исполь­зуют функ­цию repeat. Ска­жем, repeat(6, 1fr) создаст шесть направ­ля­ю­щих шири­ной в 1fr. Функ­цию можно исполь­зо­вать в пере­мешку с дру­гими зна­че­ни­ями и повто­рять столько раз, сколько нужно.

Чтобы не дублировать описания одинаковых колонок, используют функцию repeat. Скажем, repeat(6, 1fr) создаст шесть направляющих шириной в 1fr. Функцию можно использовать в перемешку с другими значениями и повторять столько раз, сколько нужно.

1fr
1fr
1fr
1fr
1fr
1fr

grid‑template‑columns: repeat(6, 1fr) — то же самое, что grid‑template‑columns: 1fr 1fr 1fr 1fr 1fr 1fr

2fr
2fr
2fr
1fr
1fr
1fr

grid‑template‑columns: repeat(3, 2fr) repeat(3, 1fr) поделит контейнер в соотношении 2:2:2:1:1:1

50px
1fr
1fr
1fr
1fr
50px

grid‑template‑columns: 50px repeat(4, 1fr) 50px выделит первой и последней колонке по 50 пк, а оставшееся место поделит поровну между четырьмя колонками

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