🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру
Удобно листать не только прокруткой, но и клавишами‑стрелками:
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
Поработаем с готовым набором стилей на примере Бутстрапа.
Сначала подключим файл стилей Бутстрапа к странице. Проще всего подключать прямо с серверов Бутстрапа. Добавим актуальную ссылку с сайта Бутстрапа в head:
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
Или для надёжности скачаем файл по ссылке и будем держать рядом с вёрсткой:
<link rel="stylesheet" href="./bootstrap.min.css">
Берём пример кода из документации Бутстрапа и убеждаемся, что стили подключились и работают — на странице появилась стилизованная кнопка.
<button type="button" class="btn btn-primary">
Inbox
<span class="badge rounded-pill bg-danger">
9+
</span>
</button>
Кнопки. Документация Бутстрапа
Поработаем с готовым набором стилей на примере Бутстрапа.
Сначала подключим файл стилей Бутстрапа к странице. Проще всего подключать прямо с серверов Бутстрапа. Добавим актуальную ссылку с сайта Бутстрапа в head:
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
Или для надёжности скачаем файл по ссылке и будем держать рядом с вёрсткой:
<link rel="stylesheet" href="./bootstrap.min.css">
Берём пример кода из документации Бутстрапа и убеждаемся, что стили подключились и работают — на странице появилась стилизованная кнопка.
<button type="button" class="btn btn-primary">
Inbox
<span class="badge rounded-pill bg-danger">
9+
</span>
</button>
Кнопки. Документация Бутстрапа
Ключевая фишка Бутстрапа и других наборов стилей — готовые классы для работы с модульной сеткой.
В Бутстрапе строки и ячейки сетки задают классами row и col. Есть несколько вариантов работы с ними.
Первый вариант — явно указать ширину ячеек в колонках в рамках 12‑колоночной сетки. Для корректной работы в таком случае, общая ширина ячеек в строке должна быть равна числу колонок — 12.
<div class="row">
<div class="col-8"></div>
<div class="col-4"></div>
</div>
<div class="row">
<div class="col-2"></div>
<div class="col-10"></div>
</div>
<div class="row">
<div class="col-6"></div>
<div class="col-4"></div>
<div class="col-2"></div>
</div>
Второй вариант — не указывать ширину ячеек. Тогда они поделят доступную ширину равномерно. Количество таких ячеек в строке ограничено лишь здравым смыслом.
<div class="row">
<div class="col"></div>
<div class="col"></div>
</div>
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
Ячейки с указанной шириной и без можно комбинировать, но только если вы хорошо понимаете, зачем это делаете и как поведёт себя итоговая вёрстка. Разобраться с поведением классов Бутстрапа в этом и других нестандартных случаях поможет тщательное изучение документации.
Модульная сетка. Документация Бутстрапа
Ключевая фишка Бутстрапа и других наборов стилей — готовые классы для работы с модульной сеткой.
В Бутстрапе строки и ячейки сетки задают классами row и col. Есть несколько вариантов работы с ними.
Первый вариант — явно указать ширину ячеек в колонках в рамках 12‑колоночной сетки. Для корректной работы в таком случае, общая ширина ячеек в строке должна быть равна числу колонок — 12.
<div class="row">
<div class="col-8"></div>
<div class="col-4"></div>
</div>
<div class="row">
<div class="col-2"></div>
<div class="col-10"></div>
</div>
<div class="row">
<div class="col-6"></div>
<div class="col-4"></div>
<div class="col-2"></div>
</div>
Второй вариант — не указывать ширину ячеек. Тогда они поделят доступную ширину равномерно. Количество таких ячеек в строке ограничено лишь здравым смыслом.
<div class="row">
<div class="col"></div>
<div class="col"></div>
</div>
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
Ячейки с указанной шириной и без можно комбинировать, но только если вы хорошо понимаете, зачем это делаете и как поведёт себя итоговая вёрстка. Разобраться с поведением классов Бутстрапа в этом и других нестандартных случаях поможет тщательное изучение документации.
Модульная сетка. Документация Бутстрапа
Отдельные классы в Бутстрапе управляют падингами и маржинами — внутренними и внешними отступами элемента. Есть пять стандартных размеров отступов.
Класс p-1 установит минимальный, а p-5 — максимальный возможный падинг со всех четырёх сторон.
Классы с уточнением t, b, l, r (top, bottom, left, right) установят падинг только с одной стороны, а с уточнением x или y — слева‑справа или сверху‑снизу.
<!-- Со всех сторон -->
<div class="p-1"></div>
<!-- Только сверху -->
<div class="pt-3"></div>
<!-- Сверху и снизу -->
<div class="pt-1 pb-2"></div>
<!-- Сверху и снизу -->
<div class="py-2"></div>
<!-- Сверху, снизу, слева и справа -->
<div class="pt-1 pb-2 px-2"></div>
Маржины задаются тем же образом, но p меняется на m, а кроме значений 1…5 доступно auto — отжать элемент до предела.
<div class="m-1"></div>
<div class="ml-2"></div>
<div class="ml-auto mt-4"></div>
Класcы падингов и маржинов можно комбинировать:
<div class="p-1 m-1"></div>
<div class="p-1 pl-3 ml-2"></div>
<div class="p-2 ml-auto mt-4"></div>
Отступы:
В главе «Знакомство с ЦСС»
Отдельные классы в Бутстрапе управляют падингами и маржинами — внутренними и внешними отступами элемента. Есть пять стандартных размеров отступов.
Класс p-1 установит минимальный, а p-5 — максимальный возможный падинг со всех четырёх сторон.
Классы с уточнением t, b, l, r (top, bottom, left, right) установят падинг только с одной стороны, а с уточнением x или y — слева‑справа или сверху‑снизу.
<!-- Со всех сторон -->
<div class="p-1"></div>
<!-- Только сверху -->
<div class="pt-3"></div>
<!-- Сверху и снизу -->
<div class="pt-1 pb-2"></div>
<!-- Сверху и снизу -->
<div class="py-2"></div>
<!-- Сверху, снизу, слева и справа -->
<div class="pt-1 pb-2 px-2"></div>
Маржины задаются тем же образом, но p меняется на m, а кроме значений 1…5 доступно auto — отжать элемент до предела.
<div class="m-1"></div>
<div class="ml-2"></div>
<div class="ml-auto mt-4"></div>
Класcы падингов и маржинов можно комбинировать:
<div class="p-1 m-1"></div>
<div class="p-1 pl-3 ml-2"></div>
<div class="p-2 ml-auto mt-4"></div>
Отступы:
В главе «Знакомство с ЦСС»
Обычные классы Бутстрапа для работы с сеткой и отступами применятся на всех размерах экрана. Код из примера покажет ячейки одинаковой ширины и на телефоне, и на компьютере:
<div class="row">
<div class="col-6"></div>
<div class="col-6"></div>
</div>
Но если дописать к классу особый модификатор, то класс начнёт работать только начиная с определённой ширины экрана.
Например, модификатор lg (large) применит класс только на ширине экрана от 992 пк. Добавив такой класс, можно поставить ячейки друг над другом на узком экране и в ряд на широком:
<div class="row">
<div class="col-12 col-lg-6"></div>
<div class="col-12 col-lg-6"></div>
</div>
В Бутстрапе есть пять модификаторов экрана: sm, md, lg, xl, xxl. Они применят класс от ширины 576, 768, 992, 1200 и 1400 пк соответственно.
По умолчанию всегда применятся классы без модификатора, а классы с модификатором перебивают их на своей ширине экрана. Например, такой код изменит внутренний отступ от минимального на телефоне до максимального на экране шириной 1200—1399 пк и снова на минимальный, начиная с ширины 1400 пк:
<div class="p-1 p-md-3 p-xl-5 p-xxl-1"></div>
Не все классы Бутстрапа поддерживают модификаторы. Проверить поддержку можно экспериментальным путём или заглянув в документацию интересующего класса.
Обычные классы Бутстрапа для работы с сеткой и отступами применятся на всех размерах экрана. Код из примера покажет ячейки одинаковой ширины и на телефоне, и на компьютере:
<div class="row">
<div class="col-6"></div>
<div class="col-6"></div>
</div>
Но если дописать к классу особый модификатор, то класс начнёт работать только начиная с определённой ширины экрана.
Например, модификатор lg (large) применит класс только на ширине экрана от 992 пк. Добавив такой класс, можно поставить ячейки друг над другом на узком экране и в ряд на широком:
<div class="row">
<div class="col-12 col-lg-6"></div>
<div class="col-12 col-lg-6"></div>
</div>
В Бутстрапе есть пять модификаторов экрана: sm, md, lg, xl, xxl. Они применят класс от ширины 576, 768, 992, 1200 и 1400 пк соответственно.
По умолчанию всегда применятся классы без модификатора, а классы с модификатором перебивают их на своей ширине экрана. Например, такой код изменит внутренний отступ от минимального на телефоне до максимального на экране шириной 1200—1399 пк и снова на минимальный, начиная с ширины 1400 пк:
<div class="p-1 p-md-3 p-xl-5 p-xxl-1"></div>
Не все классы Бутстрапа поддерживают модификаторы. Проверить поддержку можно экспериментальным путём или заглянув в документацию интересующего класса.
Готовый набор стилей — не всегда хороший выбор. Не cтоит бездумно тащить его в любую вёрстку.
Изучайте документацию набора, чтобы понимать его возможности и ограничения, когда он принесёт пользу, а когда станет обузой. Выбирайте инструмент под задачу, а не подгоняйте задачу под инструмент.
Нестандартный дизайн часто эффективнее верстать вручную, не загоняя себя в рамки готовых решений. Ручная вёрстка сложнее, но гораздо гибче. Об этом — следующие главы.
Изучать и применять осмысленно следует любые готовые решения
Готовый набор стилей — не всегда хороший выбор. Не cтоит бездумно тащить его в любую вёрстку.
Изучайте документацию набора, чтобы понимать его возможности и ограничения, когда он принесёт пользу, а когда станет обузой. Выбирайте инструмент под задачу, а не подгоняйте задачу под инструмент.
Нестандартный дизайн часто эффективнее верстать вручную, не загоняя себя в рамки готовых решений. Ручная вёрстка сложнее, но гораздо гибче. Об этом — следующие главы.
Изучать и применять осмысленно следует любые готовые решения