Вёрстка сайта на HTML5/CSS3

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

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Вёрстка сайта на HTML5/CSS3
Простая
~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

Вёрстка сайта на HTML5/CSS3

HTML5 и CSS3 — не устаревший стек, а актуальный минимум для любого сайта. Семантическая разметка влияет на SEO и доступность. Современный CSS3 (Grid, Custom Properties, clamp(), container queries) решает задачи, для которых раньше требовались JavaScript и сложные фреймворки.

Семантическая структура документа

Браузеры и поисковики строят дерево доступности из HTML. Правильная семантика — это не религия, это конкретные баллы в Lighthouse и корректная индексация:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Название страницы — Название сайта</title>
  <meta name="description" content="Описание страницы до 160 символов">
  <link rel="canonical" href="https://example.com/page/">
  <!-- Preload критических ресурсов -->
  <link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
</head>
<body>
  <header role="banner">
    <nav aria-label="Основная навигация">
      <ul>
        <li><a href="/">Главная</a></li>
        <li><a href="/about/" aria-current="page">О нас</a></li>
      </ul>
    </nav>
  </header>

  <main id="main-content">
    <article>
      <header>
        <h1>Заголовок статьи</h1>
        <time datetime="2025-03-28">28 марта 2025</time>
      </header>
      <section aria-labelledby="section-intro">
        <h2 id="section-intro">Введение</h2>
        <p>Текст...</p>
      </section>
    </article>

    <aside aria-label="Похожие материалы">
      <!-- виджеты -->
    </aside>
  </main>

  <footer role="contentinfo">
    <!-- ... -->
  </footer>
</body>
</html>

<article> — самодостаточный контент (статья, карточка товара, комментарий). <section> — тематический блок внутри документа. <aside> — дополнительный контент, не влияющий на понимание основного. Не использовать <div> там, где есть подходящий семантический тег.

Современный CSS: что использовать в 2025

CSS Custom Properties как дизайн-система:

:root {
  --font-sans:    'Inter', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', monospace;

  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 2rem;
  --space-xl: 4rem;

  --color-text:    hsl(220 13% 13%);
  --color-muted:   hsl(220 9% 46%);
  --color-accent:  hsl(221 83% 53%);
  --color-surface: hsl(0 0% 98%);
}

clamp() для fluid typography — размер шрифта масштабируется с шириной экрана без медиазапросов:

h1 { font-size: clamp(1.75rem, 4vw + 1rem, 3rem); }
h2 { font-size: clamp(1.375rem, 2.5vw + 0.75rem, 2.25rem); }
p  { font-size: clamp(1rem, 1.5vw + 0.5rem, 1.125rem); }

Container Queries — компонент адаптируется к размеру своего контейнера, а не экрана:

.card-wrapper {
  container-type: inline-size;
  container-name: card;
}

.card { display: block; }

@container card (min-width: 400px) {
  .card {
    display: grid;
    grid-template-columns: 200px 1fr;
  }
}

Производительность CSS

Критический CSS — стили выше сгиба инлайном в <head>, остальное загружается асинхронно:

<style>
  /* Inline critical CSS — ~1-3kb */
  body { margin: 0; font-family: var(--font-sans); }
  header { ... }
  .hero { ... }
</style>
<link rel="stylesheet" href="/css/main.css" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="/css/main.css"></noscript>

CSS Containment для изоляции перерисовки:

.card {
  contain: layout paint; /* Браузер не будет перерисовывать снаружи карточки */
}

will-change только там где нужно — не вешать глобально:

/* Только на элементы, которые реально анимируются */
.modal { will-change: transform, opacity; }

Формы

<form novalidate>
  <div class="field">
    <label for="email">Email <span aria-hidden="true">*</span></label>
    <input
      type="email"
      id="email"
      name="email"
      autocomplete="email"
      aria-required="true"
      aria-describedby="email-error"
    >
    <span id="email-error" role="alert" class="field__error" hidden>
      Введите корректный email
    </span>
  </div>
</form>

autocomplete — обязательный атрибут для форм авторизации и регистрации. Браузеры и менеджеры паролей используют его для автозаполнения.

Изображения

<!-- Адаптивные изображения с srcset -->
<img
  src="image-800.webp"
  srcset="image-400.webp 400w, image-800.webp 800w, image-1200.webp 1200w"
  sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 400px"
  alt="Описание изображения"
  width="800"
  height="600"
  loading="lazy"
  decoding="async"
>

<!-- Для hero-изображения — loading="eager" + fetchpriority="high" -->
<img
  src="hero.webp"
  alt="..."
  width="1440"
  height="600"
  loading="eager"
  fetchpriority="high"
>

width и height обязательны — браузер резервирует место до загрузки и избегает CLS (Cumulative Layout Shift).

Доступность (a11y)

  • Все интерактивные элементы достижимы с клавиатуры (Tab, Enter, Space)
  • Фокус-стиль виден: outline не скрывать без замены
  • Цветовой контраст ≥ 4.5:1 для текста (WCAG 2.1 AA)
  • Иконки без текста — aria-label или скрытый <span>
/* Кастомный фокус вместо дефолтного outline */
:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: 3px;
}

/* Скрыть для мышиного взаимодействия */
:focus:not(:focus-visible) {
  outline: none;
}

Сроки

Для вёрстки на HTML5/CSS3 сроки полностью зависят от объёма:

Объём Время
Landing page (1 экран) 0.5–1 день
Landing page (полноценный, 6–8 секций) 1–2 дня
Корпоративный сайт (5–10 страниц) 3–5 дней
Интернет-магазин (шаблоны категорий, товара, корзины) 5–8 дней

Это вёрстка без логики (без JavaScript фреймворков и backend).