🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру
Удобно листать не только прокруткой, но и клавишами‑стрелками:
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
В многострочных контейнерах за выравнивание строк на поперечной оси отвечает свойство align-content
В многострочных контейнерах за выравнивание строк на поперечной оси отвечает свойство align-content
Есть два способа задать просветы между элементами. Первый — задать margin
у флекс‑элементов:
.columns > * {
margin: 20px 10px;
}
Второй способ — задать просветы между элементами с помощью gap
у контейнера:
.columns {
gap: 40px 20px;
}
Маржин даёт дополнительные отступы до и после всех элементов. Чтобы не обнулять и не компенсировать их соседними элементами, лучше использовать gap
Есть два способа задать просветы между элементами. Первый — задать margin
у флекс‑элементов:
.columns > * {
margin: 20px 10px;
}
Второй способ — задать просветы между элементами с помощью gap
у контейнера:
.columns {
gap: 40px 20px;
}
Маржин даёт дополнительные отступы до и после всех элементов. Чтобы не обнулять и не компенсировать их соседними элементами, лучше использовать gap
Чтобы лучше понять флексбоксы, проведём аналогию с авто лейаутом из Фигмы.
Стрелки в левой колонке отвечают за направление главной оси:
Расстояние между элементами задаётся с помощью gap
Отступы снаружи элементов задаются с помощью свойств контейнера:
Выравнивание задаётся комбинацией свойств:
Перенос во флексбоксе обычно используют для адаптивных колонок или набора элементов, которым не важна фиксированная сетка. Например, для вёрстки облака тегов или вариантов ответа в чате.
Начнём с разметки вариантов ответов:
<ul class="replies">
<li>Иди лесом</li>
<li>Иди опушкой</li>
<li>Нет!</li>
<li>Позови человека</li>
<li>Не хотелось бы хвастаться. Давайте лучше обсудим вашу задачу</li>
<li>Нет, благодарю. Я готов начинать</li>
</ul>
Превратим список во флекс‑контейнер, спрячем маркеры и обнулим отступы. Теперь элементы списка, которые шли один под другим, выстроились в строчку, но сами продолжают вести себя, как абзацы текста.
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
Укажем выравнивание и включим перенос. Теперь элементы списка не пытаются вместиться в одну строчку и выравниваются по правому краю. Перенос произойдёт только в тех элементах, которым не хватит всей ширины контейнера.
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
justify-content: flex-end; /* Прижимаем к правому краю */
align-content: flex-start; /* И вверх по поперечной оси */
flex-wrap: wrap;
}
Зададим отступ между элементами:
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
flex-direction: row;
justify-content: flex-end;
align-content: flex-start;
flex-wrap: wrap;
gap: 10px;
}
И настроим оформление вариантов ответов:
.replies li {
padding: 10px 20px;
border-radius: 9px;
border: 1px solid #0b93f6;
font: 18px/24px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.replies li:hover {
background: #0b93f6;
color: #fff;
cursor: pointer; /* Меняем курсор со стрелочки на курсор, который обычно появляется над нажимаемыми элементами */
}
Перенос во флексбоксе обычно используют для адаптивных колонок или набора элементов, которым не важна фиксированная сетка. Например, для вёрстки облака тегов или вариантов ответа в чате.
Начнём с разметки вариантов ответов:
<ul class="replies">
<li>Иди лесом</li>
<li>Иди опушкой</li>
<li>Нет!</li>
<li>Позови человека</li>
<li>Не хотелось бы хвастаться. Давайте лучше обсудим вашу задачу</li>
<li>Нет, благодарю. Я готов начинать</li>
</ul>
Превратим список во флекс‑контейнер, спрячем маркеры и обнулим отступы. Теперь элементы списка, которые шли один под другим, выстроились в строчку, но сами продолжают вести себя, как абзацы текста.
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
Укажем выравнивание и включим перенос. Теперь элементы списка не пытаются вместиться в одну строчку и выравниваются по правому краю. Перенос произойдёт только в тех элементах, которым не хватит всей ширины контейнера.
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
justify-content: flex-end; /* Прижимаем к правому краю */
align-content: flex-start; /* И вверх по поперечной оси */
flex-wrap: wrap;
}
Зададим отступ между элементами:
.replies {
display: flex;
list-style: none;
margin: 0;
padding: 0;
flex-direction: row;
justify-content: flex-end;
align-content: flex-start;
flex-wrap: wrap;
gap: 10px;
}
И настроим оформление вариантов ответов:
.replies li {
padding: 10px 20px;
border-radius: 9px;
border: 1px solid #0b93f6;
font: 18px/24px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.replies li:hover {
background: #0b93f6;
color: #fff;
cursor: pointer; /* Меняем курсор со стрелочки на курсор, который обычно появляется над нажимаемыми элементами */
}
По умолчанию флекс‑элементы занимают ровно столько места, сколько нужно их содержимому. Чтобы управлять их размерами, растягивая, уменьшая или занимая определённую долю, есть три ЦСС‑свойства: flex-basis
, flex-grow
и flex-shrink
flex-basis
определяет начальный размер элемента перед применением остальных свойств. Считайте, что flex-basis
задаёт идеальный или предположительный размер элемента.
flex-grow
и flex-shrink
применяются после flex-basis
. Браузер сверяется с ними, чтобы понять, как упаковать элементы, если осталось свободное место или его не хватило.
flex-basis
задаётся в единицах измерения размеров: пикселях, процентах, емах и прочих. flex-grow
и flex-shrink
определяют собственные относительные размеры элементов, поэтому задаются безразмерными положительными числами.
По умолчанию флекс‑элементы занимают ровно столько места, сколько нужно их содержимому. Чтобы управлять их размерами, растягивая, уменьшая или занимая определённую долю, есть три ЦСС‑свойства: flex-basis
, flex-grow
и flex-shrink
flex-basis
определяет начальный размер элемента перед применением остальных свойств. Считайте, что flex-basis
задаёт идеальный или предположительный размер элемента.
flex-grow
и flex-shrink
применяются после flex-basis
. Браузер сверяется с ними, чтобы понять, как упаковать элементы, если осталось свободное место или его не хватило.
flex-basis
задаётся в единицах измерения размеров: пикселях, процентах, емах и прочих. flex-grow
и flex-shrink
определяют собственные относительные размеры элементов, поэтому задаются безразмерными положительными числами.