CSS и вёрстка

Как сделать расстояние между кнопками в css

📅 ⏱ 22:09 ⏳ 1 мин 💬 0

Как сделать расстояние между кнопками в css: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения

Коротко: расстояние между кнопками задают свойством gap у flex/grid-контейнера — это самый современный способ. Альтернативы: margin у кнопок с обнулением крайних, justify-content: space-between для «по краям» и gap с flex-wrap для переноса. Ниже — как выбрать и не наделать «двойных» отступов.

Кому и зачемКнопки почти всегда идут группой: «Сохранить» и «Отмена», «Купить» и «Подробнее», пагинация. Важно, чтобы промежутки были одинаковыми и не ломались при переносе на узкий экран.

Вкладки: 4 способа расставить зазор




CSS
.actions {
  display: flex;
  gap: 12px;        /* и по строке, и при переносе */
  flex-wrap: wrap;
}

Лучший способ: gap не добавляет отступов снаружи группы и корректно работает при переносе строк. Ничего «обнулять» не нужно.

CSS
.btn { margin-right: 12px; }
.actions .btn:last-child { margin-right: 0; }

Классический способ. Важно убирать отступ у последней кнопки, иначе группа «съедет» влево или появится лишний сдвиг при выравнивании по центру.

CSS
.btn + .btn { margin-left: 12px; }

Селектор «сосед» добавляет отступ только между кнопками, без «крайних». Чисто и без :last-child. Работает, когда кнопки — соседние элементы.

CSS
.toolbar {
  display: flex;
  justify-content: space-between;
}

Если нужно раскидать кнопки «по краям» блока. Промежуток не задаётся, он вычисляется автоматически. Для ровного зазора с фиксированными отступами лучше flex + gap.

Правило одной кнопкиЕсли кнопка может быть в группе одна, gap и «сосед» ведут себя правильно (нет лишнего отступа), а margin на всех кнопках — нет. Поэтому gap предпочтительнее.

Вертикальный зазор и перенос

CSS
.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 8px;   /* 12px по вертикали, 8px по горизонтали */
}

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

Практика: три случая

  1. Две кнопки рядом: flex + gap: 12px.
  2. Кнопка на всю ширину на мобильном: у кнопки flex: 1 1 100% в медиа-запросе.
  3. Группа по центру: родителю justify-content: center + gap.

Частые ошибки: причина → решение

Симптом Причина Решение
Двойной отступ gap + margin одновременно оставить что-то одно
Кнопки «прилипли» gap не поддерживается или не задан проверить display: flex
Лишний сдвиг справа margin у последней кнопки :last-child { margin: 0 }
Неровно при переносе margin без учёта строк перейти на gap

Проверьте себя

Чек-лист




Какой способ расставить зазор самый надёжный?




Что может дать «двойной» отступ между кнопками?




Вопросы и ответы

В многострочных контейнерах (колоночная вёрстка) местами да, но надёжнее использовать gap именно во flex или grid.

Задайте gap: 16px 0 — 16px по вертикали (между строками), 0 по горизонтали. Или наоборот, по задаче.

Из-за разного текста и padding. Задайте общий min-height и align-items: center у контейнера.

Сделайте контейнер flex и задайте кнопкам flex: 1 — они разделят ширину поровну с учётом gap.

Итоги

  • Основной способ — gap у flex/grid-контейнера.
  • margin требует обнуления у крайних элементов.
  • Селектор .btn + .btn даёт отступ только между кнопками.
  • Не сочетайте gap и margin — получите двойной зазор.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

Наш специалист сделает базовый аудит вашего проекта и предложит персональные предложения.

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

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

Закажите сайт

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

Закажите сайт лендинг

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

Закажите сайт каталог

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

Закажите интернет-магазин

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

Закажите веб-приложение

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

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость