Как стать автором
Обновить

Анимированные кнопки произвольной ширины на CSS3

Время на прочтение1 мин
Количество просмотров23K
Перед нами стояла задача сверстать универсальную кнопку только на HTML и CSS, не имеющую фиксированного размера по ширине, которая в дефолтном состоянии отображает только иконку, а при наведении будет показываться текст внутри неё.

image

Казалось бы, вот же оно — очевидное и простое решение:

.button {
  transition: width ease-out 0.2s;
  width: 32px;
}
.button:hover {
  transition: width ease-out 0.2s;
  width: auto;
}

Но css transition в этом случае не отрабатывает.

Когда раньше ко мне приходили и спрашивали — «а можно ли так сделать на CSS3?», я разочаровывал дизайнеров и менеджеров, порицая эдакий недопил в css-свойстве transition.

И все таки оказалось, что одна лазейка есть, причем простая до безобразия.

Вместо width надо заюзать max-width:

.button {
  transition: width ease-out 0.2s;
  max-width: 32px;
}
.button:hover {
  transition: width ease-out 0.2s;
  max-width: 300px;
}

Та же сама история применима, когда нам надо «поиграться» с height.

Демо и исходный код можно посмотреть там же, во вкладках html и css.

Спасибо за внимание!
Теги:
Хабы:
Всего голосов 63: ↑57 и ↓6+51
Комментарии35

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн