
Размещение кнопок в одном ряду важно при создании форм, панелей управления и интерфейсов с быстрым доступом к действиям. В HTML для этого можно использовать как базовые теги <button>, так и ссылки с атрибутом role=»button». Однако без корректного позиционирования элементы будут отображаться друг под другом.
Для выравнивания кнопок по горизонтали применяются несколько подходов. Самый простой вариант – использовать блочную структуру с inline-block, позволяющую расположить элементы на одной линии без сложных правил. Более гибкий способ – применение Flexbox, где свойства display: flex и gap обеспечивают контроль расстояния и выравнивания.
Если требуется адаптивное поведение, например, чтобы кнопки корректно сжимались на узких экранах, рекомендуется использовать flex-wrap или сетку CSS Grid. Такие методы позволяют сохранить читаемость интерфейса и удобство взаимодействия даже при изменении размеров окна браузера.
Использование тега <button> и базовой разметки

Тег <button> поддерживает вложенный текст и любые инлайн-элементы, что делает его более гибким по сравнению с <input type=»button»>. Для расположения двух кнопок рядом достаточно поместить их в одну строку внутри контейнера без переноса строк.
Пример минимальной структуры:
<div>
<button type="button">Ок</button>
<button type="button">Отмена</button>
</div>
| Свойство | Поведение |
|---|---|
| type=»button» | Кнопка выполняет скрипт, не отправляя форму. |
| type=»submit» | Отправляет форму при нажатии. |
| Вложенный контент | Допустим текст, иконки, теги <span> для оформления. |
| Отображение рядом | Обеспечивается автоматически при размещении в одной строке. |
Для более точного контроля можно использовать неразрывный пробел ( ) между кнопками или полностью убрать переносы в коде, чтобы сократить расстояние.
Применение CSS-свойства display: inline-block
Свойство display: inline-block позволяет разместить кнопки в одну строку, сохраняя возможность задавать им ширину, высоту, внутренние отступы и границы. В отличие от inline, элементы не теряют блочные характеристики, что упрощает точное выравнивание.
Пример разметки:
<button class="btn">Ок</button>
<button class="btn">Отмена</button>
CSS-настройка:
.btn {
display: inline-block;
margin-right: 8px;
padding: 10px 16px;
}
Отступ margin-right задаёт расстояние между кнопками, при этом они не переносятся на новую строку. Чтобы избежать лишних пробелов, возникающих из-за разметки HTML, используют либо удаление промежутков между тегами, либо свойство font-size: 0 у контейнера и последующее восстановление размера шрифта у кнопок.
Размещение кнопок через flex-контейнер

Для управления положением кнопок удобно использовать flex-контейнер. Этот метод позволяет задать направление, отступы и выравнивание элементов без лишней разметки.
- Создайте контейнер с
display: flex;. - Задайте
gapдля расстояния между кнопками, чтобы не использовать внешние отступы. - При необходимости измените направление с
rowнаcolumnчерез свойствоflex-direction. - Для выравнивания используйте
justify-content(по горизонтали) иalign-items(по вертикали).
Пример кода:
<div class="btn-box">
<button>Ок</button>
<button>Отмена</button>
</div>
.btn-box {
display: flex;
gap: 10px;
justify-content: center;
}
Подход с flex избавляет от необходимости вручную рассчитывать отступы и гарантирует адаптивное поведение кнопок при изменении ширины контейнера.
Использование grid-сетки для кнопок
Grid-сетка позволяет точно управлять расположением элементов без дополнительных оберток. Чтобы разместить две кнопки рядом, достаточно задать контейнеру display: grid и определить количество столбцов.
Пример:
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
<button>Подтвердить</button>
<button>Отмена</button>
</div>
Свойство grid-template-columns: 1fr 1fr; делит контейнер на два равных столбца. Значение gap регулирует расстояние между кнопками. При необходимости ширину можно задать явно, например 150px 200px, чтобы кнопки имели разные размеры.
Grid-сетка удобна при адаптивной верстке: добавление правила @media позволяет автоматически перестраивать кнопки в колонку на узких экранах, изменяя количество столбцов с двух на один.
Регулировка отступов между кнопками

Для создания расстояния между кнопками используйте свойство margin. Например, margin-right: 10px; добавит промежуток справа от первой кнопки.
Если требуется равномерное распределение, можно применить gap внутри контейнера с display: flex;: gap: 12px; автоматически задаст одинаковые интервалы между всеми кнопками.
Чтобы управлять вертикальными и горизонтальными отступами отдельно, используйте запись через четыре значения: margin: 0 8px 0 0;. Здесь справа устанавливается 8 пикселей, остальные стороны без отступов.
При адаптивной верстке вместо фиксированных значений в пикселях удобно использовать em или %, чтобы расстояние масштабировалось вместе с размером шрифта или шириной контейнера.
Выравнивание кнопок по центру контейнера
Для точного центрирования двух кнопок внутри контейнера чаще всего используют Flexbox или CSS Grid. Flexbox проще в реализации и обеспечивает гибкое выравнивание независимо от размера кнопок.
Пример с Flexbox:
Рекомендации по настройке:
- Использовать
gapвместо марджинов для управления расстоянием между кнопками. - При необходимости добавлять
align-items: center;для вертикального выравнивания кнопок в контейнере с фиксированной высотой. - Для адаптивного дизайна применять медиазапросы, чтобы при уменьшении ширины экрана кнопки не выходили за пределы контейнера.
Альтернатива через Grid:
Grid подходит, если в будущем планируется расширение ряда кнопок или добавление дополнительных элементов в одну линию без изменения структуры.
Создание одинаковой ширины у кнопок

Для одинаковой ширины кнопок используйте CSS-свойство width. Задайте фиксированное значение в пикселях или процентах: width: 150px; или width: 40%;. При использовании процентов убедитесь, что контейнер имеет заданную ширину.
Если кнопки содержат текст переменной длины, добавьте text-align: center; и box-sizing: border-box;, чтобы ширина учитывала внутренние отступы и границы.
Для динамического выравнивания под контент используйте display: flex; у родительского блока и flex: 1; для каждой кнопки. Это автоматически распределит одинаковую ширину независимо от текста.
Пример с фиксированной шириной:
<button style="width: 150px; padding: 10px;">Кнопка 1</button>
<button style="width: 150px; padding: 10px;">Кнопка 2</button>
Пример с flex для равной ширины:
<div style="display: flex; gap: 10px;">
<button style="flex: 1; padding: 10px;">Кнопка 1</button>
<button style="flex: 1; padding: 10px;">Кнопка 2</button>
</div>
Использование этих подходов гарантирует одинаковую ширину кнопок как при статическом, так и при адаптивном дизайне. Контроль отступов и границ обеспечивает точное визуальное соответствие.
Добавление адаптивности для мобильных устройств

Для корректного отображения двух кнопок рядом на мобильных устройствах используйте CSS Flexbox с медиазапросами. Например, установите display: flex; и gap: 10px; для контейнера кнопок, чтобы обеспечить равномерный отступ между ними.
Добавьте медиазапросы для экранов шириной до 480px. Внутри них переключите flex-direction на column, чтобы кнопки располагались вертикально, и увеличьте padding для удобного касания пальцем: padding: 12px 20px;.
Используйте относительные единицы измерения (em, rem, vw) вместо фиксированных пикселей для ширины и шрифта, чтобы кнопки масштабировались пропорционально размеру экрана.
Для предотвращения переполнения добавьте flex-wrap: wrap; и min-width для кнопок. Например, min-width: 120px; сохранит читаемость текста на узких экранах.
Проверяйте адаптивность в эмуляторах устройств и используйте атрибут meta viewport в head страницы: <meta name=»viewport» content=»width=device-width, initial-scale=1″>. Это гарантирует корректное масштабирование и предотвращает горизонтальную прокрутку.
Для улучшения UX на сенсорных экранах увеличьте зоны касания кнопок до минимум 48px по высоте и ширине, чтобы избежать случайных нажатий.
Вопрос-ответ:
Почему кнопки иногда не выстраиваются в одну линию?
Причиной может быть то, что кнопки по умолчанию являются строчно-блочными элементами. Если они находятся в блоке, без стилей они будут занимать всю ширину контейнера. Решение — использовать display: inline-block; или обернуть их в контейнер с display: flex;. Также важно убедиться, что другие CSS-правила, например width: 100% для кнопок, не мешают их выравниванию.
