CSS и вёрстка

Как сделать адаптивную кнопку CSS

📅 ⏱ 20:52 ⏳ 1 мин 💬 0

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

Коротко: адаптивная кнопка — это кнопка, которая одинаково удобна на телефоне и на большом экране. Приёмы: width: 100% на мобильных и auto на десктопе, отступы через clamp(), перенос текста, минимальная высота и достаточная зона нажатия.

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

Что делает кнопку адаптивной

Проблема Решение
Не влезает по ширине max-width: 100%
Слишком узкая на мобильном width: 100% в медиа-запросе
Мелкая зона нажатия минимум 44×44px
Отступы «прыгают» padding через clamp()
Текст обрезается перенос или короткая формулировка

Вкладки: примеры




CSS
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: clamp(10px, 2.5vw, 14px) clamp(16px, 4vw, 24px);
  border-radius: 8px;
  min-height: 44px;
  font: inherit;
  background: #003F8F;
  color: #fff;
  border: 0;
  cursor: pointer;
}

clamp() плавно меняет отступы: на узком экране они меньше, на широком — больше. Одной строкой вместо медиа-запросов.

CSS
@media (max-width: 600px) {
  .btn-block { width: 100%; }
}

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

CSS
.actions {
  display: flex;
  flex-wrap: wrap;   /* переносим кнопки */
  gap: 12px;
}
@media (max-width: 480px) {
  .actions .btn { flex: 1 1 100%; }   /* каждая на своей строке */
}

Группа кнопок переносится и на телефоне становится «столбиком» — так удобнее нажимать.

CSS
.btn svg {
  width: 1em;
  height: 1em;
  flex-shrink: 0;
}

Иконка в кнопке масштабируется вместе с текстом благодаря размеру в em и не сжимается (flex-shrink: 0).

Не «ломайте» текст кнопкиЕсли кнопка на две строки — это нормально, но текст должен переноситься целиком по словам, а не рваться посередине. Для коротких действий лучше короткий текст: «Заказать», а не «Оставить заявку на консультацию».

Практика: адаптивная кнопка

  1. Опишите базовый класс кнопки с минимальной высотой 44px.
  2. Отступы задайте через clamp().
  3. Добавьте медиа-запрос для «ширины во всю ширину».
  4. Опишите состояния :hover и :focus-visible.
  5. Проверьте с длинным текстом.
  6. Проверьте на телефоне реальным пальцем.

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

Симптом Причина Решение
Кнопка «вылезает» на мобильном фикс-ширина max-width: 100%
Тяжело нажать маленькая высота min-height: 44px
Текст обрезан нет переноса перенос или короткий текст
Кнопки «слиплись» нет gap добавить промежутки и перенос

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

Чек-лист




Какая минимальная высота кнопки для удобного нажатия?




Что даёт clamp() в отступах кнопки?




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

Нет. На мобильных это удобно для главного действия, на десктопе широкая кнопка выглядит «тяжело». Ограничивайте ширину на больших экранах.

Одна главная («Заказать») и максимум одна второстепенная («Подробнее»). Много равнозначных кнопок запутывает.

Откройте сайт на телефоне и попробуйте нажать кнопку одной рукой, не глядя. Если попали — размер достаточный.

Сократить формулировку — это лучший вариант. Если нельзя — разрешить перенос на две строки и задать нормальный line-height.

Итоги

  • Минимальная высота кнопки — 44px.
  • Отступы удобно задавать через clamp().
  • На мобильных главная кнопка — во всю ширину.
  • Опишите состояния и проверьте текст на «влезаемость».
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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