Генератор таблиц тарифов на CSS

Далее

Таблица тарифов остаётся самым ценным местом на посадочной странице: она должна быть понятной, легко просматриваемой и подводить посетителя к тому тарифу, который вы хотите продать. Этот генератор собирает одну карточку тарифа на HTML + CSS: название тарифа, цена и акцентный цвет для цены и кнопки призыва к действию. Расставьте несколько карточек рядом, чтобы получить полноценную таблицу тарифов, и скопируйте код на посадочную страницу.

Как собрать таблицу тарифов

  1. 1

    Введите название тарифа

    Название тарифа в верхней части карточки, например «Pro».

  2. 2

    Укажите цену

    Цена крупным шрифтом, например «$29». Суффикс «/mo» добавляется автоматически.

  3. 3

    Выберите акцентный цвет

    Используется для цены и кнопки призыва к действию. Выберите цвет, подходящий вашему бренду.

  4. 4

    Скопируйте код

    Карточка включает встроенный список возможностей и кнопку призыва к действию, а также собственный блок <style>. Пункты можно редактировать прямо в коде.

  5. 5

    Повторите для остальных тарифов

    Для полной таблицы продублируйте карточку для каждого тарифа и разложите их сеткой.

Базовая структура разметки

<section class="pricing">
  <article class="plan">
    <h3>Starter</h3>
    <p class="price">$9 <span>/mo</span></p>
    <p class="tagline">For solo projects.</p>
    <ul class="features">
      <li>3 projects</li>
      <li>10 GB storage</li>
      <li>Community support</li>
    </ul>
    <a class="cta" href="#">Start free</a>
  </article>

  <article class="plan featured">
    <span class="badge">Most popular</span>
    <h3>Pro</h3>
    <p class="price">$29 <span>/mo</span></p>
    <!-- ... -->
  </article>

  <article class="plan">
    <h3>Team</h3>
    <!-- ... -->
  </article>
</section>

Адаптивная сетка из трёх колонок

.pricing {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
  align-items: stretch;
}

.plan {
  padding: 2rem 1.5rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  display: flex;
  flex-direction: column;
}

.plan.featured {
  border: 2px solid #2563eb;
  position: relative;
  transform: translateY(-4px);
  box-shadow: 0 10px 30px rgba(37, 99, 235, 0.15);
}

Связка auto-fit и minmax(240px, 1fr) даёт три колонки на десктопе и одну колонку на мобильных устройствах, и больше ничего настраивать не нужно.

Выделенный тариф

Визуальные приёмы, которые притягивают взгляд:

  • Цветная рамка в акцентном цвете бренда.
  • Лёгкий подъём карточки за счёт отрицательного margin-top или translateY(-4px).
  • Более крупная кнопка CTA, обычно залитая цветом бренда, тогда как у остальных тарифов кнопка контурная.
  • Плашка («Самый популярный», «Выгоднее всего») с абсолютным позиционированием вверху карточки.
  • Увеличенная высота карточки привлекает внимание, но мешает сравнивать тарифы между собой.

Не используйте все приёмы сразу: выберите два или три. Слишком много сигналов, и визуальная иерархия попросту исчезает.

Переключатель «месяц / год»

<div class="billing-toggle">
  <button data-active="true">Monthly</button>
  <button>Annual · Save 20%</button>
</div>

Обычно переключатель подменяет значения цен небольшим скриптом на JavaScript либо использует состояние :checked у радиокнопки. Показывайте прямо в подписи переключателя процент скидки или сумму экономии в рублях (например, «Экономия 20% при оплате за год»): во многих таблицах это самый убедительный элемент.

Оформление строк с возможностями

.features {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.features li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.features li.yes::before {
  content: "";
  width: 16px; height: 16px;
  background: url(...check.svg);
}
.features li.no {
  color: #9ca3af;
  text-decoration: line-through;
}

Для пункта «включено» ставьте галочку, для «не включено» используйте серый текст или бледный крестик. Не зачёркивайте текст, не снизив при этом его контраст: жирное зачёркивание читается как акцент, а не как отсутствие возможности.

Держите CTA на виду

По одной кнопке CTA на тариф, визуально одинаковой во всех карточках. Разный текст для разных тарифов («Начать бесплатно», «Перейти на Pro», «Связаться с отделом продаж») вполне допустим и даже помогает вести пользователя по нужному сценарию.

Сделайте таблицу удобной для беглого просмотра

Пользователи редко читают таблицу тарифов слева направо: сначала они пробегают глазами цены, потом кнопки, и только затем различия в возможностях. Под это и оптимизируйте:

  1. Название тарифа и цена крупно, в верхней части карточки.
  2. Кнопка CTA видна без прокрутки карточки.
  3. Список возможностей ниже. Подчёркивайте различия между тарифами, а не повторяйте одни и те же пункты в каждой колонке.

Чек-лист доступности

  • Каждый тариф представляет собой отдельный элемент <article> со своим <h3>.
  • Плашка «Самый популярный» должна быть видимой текстовой меткой, а не только цветом (ради пользователей с нарушением цветовосприятия).
  • У кнопок CTA осмысленный текст («Начать пробный период Pro»), а не «Нажмите здесь».
  • У переключателя оплаты есть aria-pressed или семантика радиокнопок.
  • Если переключатель сделан на JavaScript, изменение цены объявляется через aria-live="polite".

Часто задаваемые вопросы

Три тарифа считаются маркетинговым стандартом: такую таблицу проще охватить взглядом, и она чётко выделяет средний вариант. Четыре тарифа оправданы, если у вас действительно четыре сегмента аудитории (частный пользователь / команда / бизнес / корпорация). Пять и больше обычно только запутывают посетителя: разбейте их на две таблицы или добавьте отдельную таблицу сравнения.

Зависит от бизнеса. Годовая оплата по умолчанию подчёркивает скидку и задаёт более низкую цену как точку отсчёта; месячная выглядит менее агрессивно. Если от этого зависит выручка, проведите A/B-тест. Компромисс: показывать по умолчанию годовую оплату, но оставить месячную в одном клике.

Сетка repeat(auto-fit, minmax(240px, 1fr)) делает это сама. При ширине окна примерно менее 800px карточки выстраиваются в одну колонку, и никакой media query для этого не нужен.

Крайним справа, если тарифы отсортированы по возрастанию цены. В кнопке должен быть текст «Связаться с отделом продаж», а не цена, и карточка должна визуально совпадать с остальными, чтобы таблицу по-прежнему было легко просматривать. Некоторые компании выносят корпоративный тариф в отдельный блок под таблицей, чтобы он не мешал сравнивать цены остальных тарифов.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.