Создаем базовую структуру и стили

Разберём простой, но рабочий шаблон страницы для блога. Он уже включает адаптивную вёрстку, семантические теги и CSS-переменные — то, что реально пригодится в первых проектах. Без лишней теории: смотрим на код и сразу понимаем, за что отвечает каждая часть.


HTML: каркас страницы

HTML-код задаёт структуру: где будет шапка, контент, боковые панели и подвал.

html
<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Блог: полезные статьи</title>
    <link rel="stylesheet" href="site.css">
  </head>
  <body>
    <div class="site-wrapper">
      <header>
        <div class="container header-content">
          <a href="/" class="logo">Website</a>
          <nav>
            <ul>
              <li><a href="/">Главная</a></li>
              <li><a href="/articles">Статьи</a></li>
              <li><a href="/about">О проекте</a></li>
            </ul>
          </nav>
        </div>
      </header>
 
      <div class="main-wrapper">
        <aside class="sidebar-left">
          Левая панель
        </aside>
 
        <main class="container">
          Статьи
        </main>
 
        <aside class="sidebar-right">
          Правая панель
        </aside>
      </div>
 
      <footer>
        <p>&copy; 2026 Website. Все права защищены.</p>
      </footer>
    </div>
  </body>
</html>

Что здесь важно

  • <!DOCTYPE html> — сообщает браузеру, что это современный HTML5. Без него браузер может включить «режим совместимости», и вёрстка поедет.
  • <html lang="ru"> — указывает язык страницы. Это полезно и для поисковиков, и для скринридеров.
  • <meta charset="utf-8"> — кодировка, без которой вместо русских букв могут появиться «кракозябры».
  • <meta name="viewport" ...> — ключевой тег для адаптивности: страница будет корректно масштабироваться на телефонах и планшетах.
  • Семантические теги (header, main, aside, footer) делают код понятным не только человеку, но и поисковым роботам.

Как устроена сетка

Структура построена на обёртках и Flexbox:

  • .site-wrapper — ограничивает ширину сайта и центрирует его.
  • .main-wrapper с display: flex выстраивает левую панель, основной контент и правую панель в ряд.
  • На мобильных устройствах (через медиа-запросы) боковые панели скрываются, а блоки встают друг под другом.

CSS: стили и адаптивность

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

css
:root {
    --bg-body: #f5f7fa;
    --bg-card: #ffffff;
    --text-main: #2c3e50;
    --text-muted: #7f8c8d;
    --accent: #3498db;
    --accent-hover: #2980b9;
    --border: #e0e6ed;
}
 
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
 
body {
    font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
    background-color: var(--bg-body);
    color: var(--text-main);
    line-height: 1.6;
}
 
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
 
.site-wrapper {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 10px;
}
 
header {
    background-color: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 5px;
    padding: 20px 10px;
    margin-top: 10px;
}
 
.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
 
.logo {
    font-weight: 700;
    font-size: 1.5rem;
    color: var(--accent);
}
 
nav ul {
    display: flex;
    gap: 24px;
}
 
nav a:hover {
    color: var(--accent);
}
 
.main-wrapper {
    display: flex;
    gap: 10px;
    margin: 10px 0;
}
 
.sidebar-left, .sidebar-right {
    border: 1px solid var(--border);
    background: var(--bg-card);
    padding: 20px;
    border-radius: 5px;
    flex: 0 0 240px;
}
 
main.container {
    flex: 1;
    border: 1px solid var(--border);
    background: var(--bg-card);
    border-radius: 5px;
    padding: 20px;
}
 
footer {
    background-color: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 5px;
    text-align: center;
    padding: 15px 0;
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-top: 10px;
}

Практические примеры

Пример 1: меняем цветовую тему.
Допустим, вы хотите сделать сайт в тёмных тонах. Достаточно поменять значения в :root:

css
:root {
    --bg-body: #1a1a1d;
    --bg-card: #2b2b30;
    --text-main: #e0e0e0;
    --text-muted: #999;
    --accent: #4facfe;
    --accent-hover: #00c6ff;
    --border: #444;
}

Вся страница сразу станет тёмной — и не придётся переписывать десятки правил.

Пример 2: добавляем иконку к логотипу.
Можно вставить SVG прямо в HTML:

html
<a href="/" class="logo">
  <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
    <path d="M3 9h18M3 15h18M5 3v18M19 3V21"/>
  </svg>
  Website
</a>

И в CSS чуть подправить выравнивание:

css
.logo {
    display: flex;
    align-items: center;
    gap: 8px;
    /* остальные стили остаются как раньше */
}

Пример 3: делаем кнопки в сайдбаре.
В левой панели можно разместить быстрые ссылки-кнопки:

html
<aside class="sidebar-left">
  <h3>Навигация</h3>
  <ul>
    <li><a href="/tags" class="btn-link">Все теги</a></li>
    <li><a href="/archive" class="btn-link">Архив</a></li>
  </ul>
</aside>

А стили:

css
.btn-link {
    display: block;
    padding: 8px 12px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--text-main);
}
.btn-link:hover {
    background: var(--accent);
    color: white;
}

Адаптивность: как сайт ведёт себя на разных экранах

В конце CSS есть медиа-запросы — они меняют поведение макета при уменьшении ширины экрана:

  • При ширине до 1024 px боковые панели остаются, но выстраиваются вертикально.
  • При ширине до 768 px сайдбары скрываются (display: none), а навигация переносится под логотип и выравнивается по центру.

Это простой, но надёжный способ сделать сайт читаемым и на компьютере, и на смартфоне.

Добавить комментарий