Вёрстка сайта с использованием Bootstrap

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Вёрстка сайта с использованием Bootstrap
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Вёрстка сайта с использованием Bootstrap

Bootstrap — наиболее распространённый CSS-фреймворк с готовой компонентной библиотекой. Используется там, где нужна скорость разработки, минимальные требования к дизайнеру и поддержка широкого браузерного спектра. Bootstrap 5 убрал jQuery-зависимость, перешёл на CSS Custom Properties и RTL-поддержку.

Установка Bootstrap 5

Через npm (рекомендуется)

npm install bootstrap @popperjs/core
// src/styles/main.scss
// 1. Переопределить переменные ДО импорта Bootstrap
$primary: #2563eb;
$secondary: #6b7280;
$border-radius: 0.5rem;
$border-radius-lg: 0.75rem;
$font-family-sans-serif: 'Inter', system-ui, -apple-system, sans-serif;
$font-size-base: 1rem;
$line-height-base: 1.6;
$box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
$enable-smooth-scroll: true;
$enable-negative-margins: true;

// 2. Импорт Bootstrap
@import "bootstrap/scss/bootstrap";

// 3. Свои стили поверх
// main.ts — импорт JS только нужных компонентов
import 'bootstrap/js/dist/modal';
import 'bootstrap/js/dist/dropdown';
import 'bootstrap/js/dist/collapse';
import 'bootstrap/js/dist/tooltip';
// Не импортировать весь bootstrap.bundle.js — лишние 15+ KB

Кастомизация через SCSS-переменные

Bootstrap использует Sass-переменные и maps. Полная кастомизация без модификации исходников:

// Цветовая палитра
$theme-colors: (
  "primary": #2563eb,
  "secondary": #6b7280,
  "success": #16a34a,
  "danger": #dc2626,
  "warning": #d97706,
  "info": #0891b2,
  "light": #f9fafb,
  "dark": #111827,
);

// Сетка
$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1280px,
  xxl: 1536px,
);

$container-max-widths: (
  sm: 540px,
  md: 720px,
  lg: 960px,
  xl: 1200px,
  xxl: 1400px,
);

// Отступы (spacer = 1rem)
$spacers: (
  0: 0,
  1: 0.25rem,
  2: 0.5rem,
  3: 0.75rem,
  4: 1rem,
  5: 1.5rem,
  6: 2rem,
  7: 3rem,
  8: 4rem,
  9: 6rem,
  10: 8rem,
);

Структура типовой страницы

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Название сайта</title>
  <link rel="stylesheet" href="/assets/main.css" />
</head>
<body>

  <!-- Навигация -->
  <nav class="navbar navbar-expand-lg navbar-light bg-white shadow-sm sticky-top">
    <div class="container">
      <a class="navbar-brand fw-bold" href="/">Logo</a>
      <button class="navbar-toggler" type="button"
        data-bs-toggle="collapse" data-bs-target="#mainNav">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="mainNav">
        <ul class="navbar-nav ms-auto align-items-lg-center gap-lg-2">
          <li class="nav-item"><a class="nav-link" href="/about">О нас</a></li>
          <li class="nav-item"><a class="nav-link" href="/services">Услуги</a></li>
          <li class="nav-item">
            <a class="btn btn-primary btn-sm" href="/contact">Связаться</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <!-- Hero -->
  <section class="py-9 py-lg-10 bg-light">
    <div class="container">
      <div class="row align-items-center g-5">
        <div class="col-lg-6">
          <h1 class="display-4 fw-bold mb-4">Заголовок hero-секции</h1>
          <p class="lead text-secondary mb-5">
            Подзаголовок с описанием ценностного предложения.
          </p>
          <div class="d-flex gap-3 flex-wrap">
            <a href="/start" class="btn btn-primary btn-lg">Начать</a>
            <a href="/demo" class="btn btn-outline-secondary btn-lg">Демо</a>
          </div>
        </div>
        <div class="col-lg-6">
          <img src="/img/hero.webp" alt="Hero" class="img-fluid rounded-3 shadow" />
        </div>
      </div>
    </div>
  </section>

  <!-- Карточки -->
  <section class="py-7">
    <div class="container">
      <h2 class="text-center fw-semibold mb-6">Наши услуги</h2>
      <div class="row g-4">
        <div class="col-md-6 col-lg-4">
          <div class="card h-100 border-0 shadow-sm">
            <div class="card-body p-5">
              <div class="mb-4 text-primary fs-1">
                <i class="bi bi-code-slash"></i>
              </div>
              <h3 class="card-title h5 fw-semibold">Разработка</h3>
              <p class="card-text text-secondary">Описание услуги.</p>
            </div>
          </div>
        </div>
      </div>
    </div>
  </section>

  <script src="/assets/main.js"></script>
</body>
</html>

Bootstrap Icons

npm install bootstrap-icons
// В main.scss
@import "bootstrap-icons/font/bootstrap-icons";

Или SVG inline:

<svg class="bi text-primary" width="24" height="24" fill="currentColor">
  <use href="/node_modules/bootstrap-icons/bootstrap-icons.svg#shield-check" />
</svg>

Компонентная работа с Bootstrap в React

// Если проект на React — использовать react-bootstrap, не data-bs-* атрибуты
import { Modal, Button, Form } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';

interface ContactModalProps {
  show: boolean;
  onHide: () => void;
}

const ContactModal: FC<ContactModalProps> = ({ show, onHide }) => (
  <Modal show={show} onHide={onHide} centered>
    <Modal.Header closeButton>
      <Modal.Title>Связаться с нами</Modal.Title>
    </Modal.Header>
    <Modal.Body>
      <Form>
        <Form.Group className="mb-3">
          <Form.Label>Email</Form.Label>
          <Form.Control type="email" placeholder="[email protected]" />
        </Form.Group>
        <Form.Group className="mb-3">
          <Form.Label>Сообщение</Form.Label>
          <Form.Control as="textarea" rows={4} />
        </Form.Group>
        <Button type="submit" variant="primary" className="w-100">Отправить</Button>
      </Form>
    </Modal.Body>
  </Modal>
);

Оптимизация размера bundle

По умолчанию Bootstrap CSS — около 180 KB. Импорт только нужных модулей:

// Минимальный набор
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/variables-dark";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
@import "bootstrap/scss/root";
@import "bootstrap/scss/reboot";
@import "bootstrap/scss/type";
@import "bootstrap/scss/grid";
@import "bootstrap/scss/helpers";
@import "bootstrap/scss/utilities/api";

// Добавлять по необходимости:
// @import "bootstrap/scss/buttons";
// @import "bootstrap/scss/nav";
// @import "bootstrap/scss/navbar";
// @import "bootstrap/scss/card";
// @import "bootstrap/scss/modal";
// @import "bootstrap/scss/forms";

Сроки

Настройка Bootstrap с SCSS-кастомизацией: 2–3 часа. Посадочная страница: 1–1.5 дня. Многостраничный корпоративный сайт: 3–5 дней. Bootstrap ускоряет вёрстку стандартных элементов (форм, таблиц, модалок) за счёт готовых компонентов.