#html #css #css3 #анимация
Вопрос: может ли css определить, если анимация незавершена? storytime: У меня классный ui с анимированными кнопками. Они расширяются при наведении, поэтому другие кнопки на панели должны одновременно сжиматься. Моя проблема (характерная не только для этого примера, но также и общая, потому что у меня были такие же проблемы и в других случаях). Когда я быстро перехожу по всем кнопкам, чтобы ускорить 2 кнопки, они сокращаются, и только одна кнопка растет, и поэтому они не заполняются как они должны,- справа появляется белая полоска. код с ошибкой: .container:hover button{ width: calc((100% / 3) - 5%); } .container button:hover{ width: calc((100% / 3) + 10%); } Полный код: .container { width: 375px; height: 100px; } .container button { transition: .15s; float: left; height: 100%; border: none; object-fit: cover; width: calc(100% / 3); } .container:hover button { width: calc((100% / 3) - 5%); } .container button:hover { width: calc((100% / 3) + 10%); } button.green { background-color: #27ae60; color: white; } button.blue { background-color: #3498db; color: white; } button.white { background-color: #ecf0f1; } body { background-color: #929AAA; } div.container { background-color: #FFF; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); margin: calc(100vh / 4 - 50px) auto }Ещё один пример - Codepen
Ответы
Ответ 1
Идея состоит в том, чтобы сделать только один элемент, с увеличением размера при наведении, а другие при этом должны уменьшится. Вот пример с flexbox: .container { width: 375px; height: 100px; display: flex; } button { transition: .15s; flex: 1; border: none; } /* you want to have 28% + 44% + 28% so it's 1 + 1.57 + 1*/ .container button:hover { flex: 1.57; } /*For styling*/ button.green { background-color: #27ae60; color: white; } button.blue { background-color: #3498db; color: white; } button.white { background-color: #ecf0f1; } body { background-color: #929AAA; } div.container { background-color: #FFF; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); margin: calc((100vh - 100px) / 2) auto }
Комментариев нет:
Отправить комментарий