#javascript #html #css #sass
#javascript #HTML #css #sass
Вопрос:
Я хочу запускать анимацию только при нажатии кнопки без JavaScript с использованием css или scss.
Я пытался использовать:active, но анимация также запускается даже после загрузки страницы.
Я думаю, что JavaScript может решить эту проблему, но я хочу знать, возможно ли ее решить только с помощью css или scss.
#clickMe:active{
animation: rotateAnimation 2s linear;
}
@keyframes rotateAnimation {
from{transform:rotate(0deg);}
to{transform:rotate(365deg);}
}
<body>
<button id="clickMe">Click Me</button>
</body>
Ответ №1:
Невозможно добиться полного поворота с помощью:active selector, потому что кнопка активна только в течение короткого времени после нажатия на нее.
В этом случае имеет больше смысла использовать JavaScript, потому что он будет запускать анимацию для события щелчка, а не: активное состояние элемента.
Но если вы действительно хотите добиться этого только с помощью CSS, вы можете использовать флажок ввода. Сначала оформите его как кнопку. Затем установите для него анимацию CSS с помощью:checked selector . Опять же, лучше выбрать метод, который имеет смысл, потому что сохранение читаемости кода имеет решающее значение для разработчика.
Ответ №2:
Вы можете использовать :focus
для достижения того же. Попробуйте это :
#clickMe:focus{
animation: rotateAnimation 2s linear;
}
@keyframes rotateAnimation {
from{transform:rotate(0deg);}
to{transform:rotate(365deg);}
}
<body>
<button id="clickMe">Click Me</button>
</body>
Комментарии:
1. Анимация не будет запускаться, когда она уже сфокусирована, как другой щелчок после первого щелчка. Я думаю, он хочет запускать анимацию каждый раз при нажатии кнопки.
2. @KoutaNakano Это было бы невозможно без javascript. Однако мы не знаем, что на самом деле произойдет на веб-странице после нажатия, поэтому давайте оставим это ему / ей 🙂