
Кнопка – один из ключевых элементов пользовательского интерфейса. В HTML она создаётся при помощи тега <button> или тега <input> с атрибутом type=»button». Разница между ними принципиальна: <button> позволяет размещать внутри себя вложенные элементы, включая текст, изображения и иконки, тогда как <input> ограничен только значением атрибута value.
По умолчанию кнопка <button> имеет тип submit, что приводит к отправке формы при клике, если она размещена внутри неё. Чтобы этого избежать, необходимо явно задать type=»button». Это распространённая ошибка, приводящая к неожиданному поведению интерфейса.
Для добавления доступности кнопке следует использовать атрибут aria-label, особенно если контент внутри неё представлен только иконкой. Также важно учитывать клавиатурную навигацию: кнопка должна быть доступна через клавишу Tab, а активация должна происходить по нажатию Enter или пробела.
Если кнопка используется для навигации, предпочтительнее использовать тег <a> с атрибутом role=»button», чтобы сохранить семантику и поведение гиперссылки, а также обеспечить совместимость с ассистивными технологиями.
Как добавить простую кнопку с помощью тега <button>
Для создания кнопки в HTML используется тег <button>, который помещается внутрь разметки в нужное место документа. Он может содержать как текст, так и вложенные элементы, например иконки или теги <span> для стилизации.
Минимальный рабочий пример:
<button>Нажми меня</button>
Чтобы кнопка работала корректно и предсказуемо, учитывайте следующее:
- По умолчанию
<button>в форме выполняет отправку. Чтобы избежать неожиданного поведения, указывайте атрибутtype. - Доступные значения атрибута
type:button– обычная кнопка, не связанная с формой.submit– отправка формы (значение по умолчанию).reset– сброс значений полей формы.
Рекомендуемый синтаксис для интерактивных интерфейсов без формы:
<button type="button">Кликни сюда</button>
Если нужна обработка клика, добавьте JavaScript:
<button type="button" onclick="alert('Привет!')">Приветствие</button>
Не используйте <button> как ссылку. Для навигации предназначен тег <a>.
Использование атрибута type для управления поведением кнопки
Атрибут type определяет функциональность кнопки и влияет на реакцию формы при её нажатии. Он обязателен для точного контроля поведения элемента <button>.
type="submit" – кнопка отправляет форму на сервер. Применяется по умолчанию внутри формы. Если использовать без указания типа, кнопка будет действовать как submit, что может вызвать непреднамеренную отправку.
type="button" – нейтральный вариант. Не вызывает отправку формы. Используется для вызова JavaScript-функций, переключения вкладок, открытия модальных окон. Рекомендуется всегда явно указывать этот тип при использовании кнопки вне логики формы.
type="reset" – сбрасывает значения всех полей формы к значениям по умолчанию. Используется редко, так как может привести к потере введённых данных без подтверждения.
Неявное поведение кнопок без type – источник ошибок при разработке. Например, кнопка внутри формы, созданная для вызова JavaScript, но без type="button", вызовет отправку формы. Это особенно критично при использовании фреймворков, где логика интерфейса отделена от формы.
Рекомендуется всегда указывать атрибут type явно, чтобы избежать непредсказуемого поведения в разных браузерах и улучшить читаемость кода.
Добавление кнопки с помощью тега <input type=»button»>

Элемент <input type="button"> создаёт простую кнопку, которая не отправляет форму. Он применяется для вызова JavaScript-функций или выполнения действий без обновления страницы.
Атрибут value задаёт текст на кнопке. Пример: <input type="button" value="Нажми меня">.
Чтобы кнопка реагировала на действия пользователя, используется атрибут onclick. Например: <input type="button" value="Показать сообщение" onclick="alert('Привет!')">.
Для управления доступностью кнопки применяется атрибут disabled. Пример: <input type="button" value="Недоступно" disabled>.
Чтобы изменить внешний вид кнопки, используются CSS-классы, назначаемые через атрибут class: <input type="button" value="Стилизация" class="btn">.
Если требуется программно изменить текст кнопки, доступ к элементу можно получить через JavaScript: document.getElementById('myBtn').value = 'Готово';. Соответственно, кнопка должна иметь атрибут id: <input type="button" id="myBtn" value="Изменить">.
Назначение действия кнопке через атрибут onclick

Атрибут onclick позволяет задать обработчик события клика прямо в HTML-разметке. Это удобно для простых сценариев, когда необходимо быстро реализовать реакцию на нажатие без подключения внешнего JavaScript.
- Синтаксис:
<button onclick="код JavaScript">Текст кнопки</button> - Можно вызывать функции:
<button onclick="myFunction()">Вызвать</button> - Внутри
onclickдопускаются любые корректные выражения JavaScript.
<button onclick="console.log('Кнопка нажата')">Нажми меня</button>
Рекомендуется:
- Избегать сложной логики внутри атрибута – выносите её в функции.
- Следить за кавычками: вложенные строки заключайте в одиночные или экранируйте двойные.
- Не использовать
onclickдля критически важного функционала – лучше назначать события через JavaScript для лучшей масштабируемости.
Для передачи параметров используйте:
<button onclick="showMessage('Привет!')">Показать сообщение</button>
Функция должна быть определена ранее:
<script>
function showMessage(msg) {
alert(msg);
}
</script>
Применение стилей к кнопке с помощью CSS классов

Для стилизации кнопок целесообразно использовать CSS классы, что позволяет централизованно управлять внешним видом и легко переиспользовать стили. Ниже приведены примеры базовых и расширенных стилей с указанием классов, которые применяются к кнопкам через атрибут class.
| CSS класс | Назначение |
|---|---|
.btn |
Базовый стиль кнопки: выравнивание, отступы, курсор, границы |
.btn-primary |
Основная кнопка: фон, цвет текста, акцент при наведении |
.btn-outline |
Контурная кнопка: прозрачный фон, рамка, цветной текст |
.btn-sm |
Уменьшенный размер: меньшая высота и внутренняя обводка |
.btn-round |
Закруглённые углы: радиус скругления до 50% или больше |
Для оптимальной адаптации кнопок под дизайн системы используйте комбинации классов. Например: <button class="btn btn-primary btn-round">. Это позволяет быстро изменять стили без правки HTML-структуры. Избегайте инлайновых стилей: они затрудняют масштабирование и поддержку проекта. Все стили должны быть описаны во внешнем или встроенном CSS-блоке.
Создание кнопок со встроенными иконками
1. Использование шрифтовых иконок
Для начала нужно подключить библиотеку иконок, например, Font Awesome. Это можно сделать, добавив ссылку на CDN в <head> вашего документа:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
Затем, чтобы вставить иконку в кнопку, используйте тег <i> с соответствующим классом для иконки. Например:
<button>
<i class="fas fa-play"></i> Начать
</button>
В данном примере иконка воспроизведения будет отображаться слева от текста. Для изменения размера иконки используйте класс fa-xs, fa-sm, fa-lg и так далее.
2. Встроенные SVG иконки
SVG-иконки идеально подходят для встраивания непосредственно в HTML-разметку. Преимущество этого метода в том, что вы можете легко изменять размеры и цвета иконки с помощью CSS. Пример кнопки с SVG-иконкой:
<button>
<svg width="24" height="24" viewBox="0 0 24 24">
<path d="M12 2L2 12h10V2z" fill="currentColor"></path>
</svg> Вверх
</button>
Здесь используется иконка стрелки, которая будет автоматически изменять цвет в зависимости от color кнопки, благодаря атрибуту fill="currentColor".
3. Рекомендации по стилизации
Чтобы кнопка с иконкой выглядела гармонично, используйте следующие подходы:
- Отступы: добавьте внутренние отступы с помощью CSS, чтобы иконка не прилегала к краям кнопки.
- Выравнивание: используйте свойство
vertical-alignдля выравнивания текста и иконки по центру. - Цвет: задайте цвет текста и иконки через свойство
color, что позволит им сочетаться с фоном кнопки.
Пример стилизованной кнопки:
<button style="background-color: #4CAF50; color: white; padding: 10px 20px;">
<i class="fas fa-check"></i> Принять
</button>
Таким образом, иконки в кнопках можно использовать для улучшения визуального восприятия и взаимодействия с пользователем. Правильное сочетание иконок и текста помогает сделать интерфейс более интуитивно понятным и привлекательным.
Как задать размер и отступы для кнопок

Для задания размера кнопки в HTML используется свойство width и height в CSS. Например, чтобы задать фиксированные размеры, можно использовать следующее правило:
button {
width: 200px;
height: 50px;
}
Если нужно, чтобы кнопка подстраивалась под содержимое, можно не указывать значения для width и height. В таком случае кнопка примет размер, соответствующий тексту или другим элементам внутри:
button {
padding: 10px 20px;
}
Для изменения отступов внутри кнопки используется свойство padding. Оно позволяет регулировать расстояние между содержимым и границами кнопки. Важно, что отступы можно задать как по всем сторонам сразу, так и по каждой отдельно. Например, чтобы задать одинаковые отступы по всем сторонам:
button {
padding: 15px;
}
Чтобы задать разные отступы для каждой стороны, можно использовать такие значения:
button {
padding: 10px 20px 15px 25px;
}
Здесь отступы заданы по часовой стрелке: сверху, справа, снизу и слева. Также можно использовать сокращенные записи, если нужно указать одинаковые значения для некоторых сторон:
button {
padding: 10px 20px;
}
Этот код задает 10 пикселей сверху и снизу, а также 20 пикселей справа и слева. Если необходимо скорректировать размеры кнопки, можно комбинировать padding с margin, чтобы задавать внешние отступы и влиять на расположение кнопки относительно других элементов на странице:
button {
margin: 20px;
}
Для задания более гибких и адаптивных размеров можно использовать проценты или единицы измерения em и rem, которые зависят от размера шрифта. Это позволяет сделать кнопку более отзывчивой на разных устройствах и экранах.
Размещение нескольких кнопок в одной строке
Чтобы разместить несколько кнопок в одной строке, используйте контейнеры, такие как <div> или <span>, которые позволят выстроить элементы горизонтально. Для достижения этой цели часто применяется свойство CSS display: inline-block, которое заставляет кнопки занимать пространство только по горизонтали, не нарушая структуры страницы.
Пример реализации кнопок в одной строке с использованием inline-block:
<div>
<button>Кнопка 1</button>
<button>Кнопка 2</button>
<button>Кнопка 3</button>
</div>
Если кнопки размещаются в контейнере с шириной, то для корректного выравнивания и недопущения переноса элементов важно использовать свойство white-space: nowrap в стилях контейнера. Оно не даст кнопкам переноситься на новую строку при уменьшении ширины окна браузера.
Для более гибкого размещения кнопок, включая выравнивание и интервалы, удобно использовать Flexbox. С помощью свойства display: flex можно точно контролировать расположение кнопок по горизонтали или вертикали:
<div style="display: flex;">
<button>Кнопка 1</button>
<button>Кнопка 2</button>
<button>Кнопка 3</button>
</div>
Если нужно разместить кнопки с равным расстоянием между ними, стоит добавить свойство justify-content: space-between. Для выравнивания кнопок по центру используйте justify-content: center.
Использование Flexbox особенно удобно при адаптивной верстке, так как позволяет быстро изменять расположение кнопок на разных устройствах, используя медиа-запросы.
