#javascript #css #animation
#javascript #css #Анимация
Вопрос:
Я учусь программировать, поэтому создаю приложение для подбрасывания монет. У меня все готово, и теперь я пытаюсь оживить монету… мой план: возьмите случайное значение int (ограниченное 10 или 11) и, и умножьте его на 180. В результате получается количество градусов, на которые повернется монета.
10 оборотов, он возвращается к голове, 11 оборотов, он переворачивается к решке.
Моя проблема: как мне передать это количество градусов обратно в css?
Могу ли я использовать переменную js в качестве значения для «transfor: rotateX (‘js var here’)» в css?
Я понятия не имею, что такое jquerys. Полагаю, я скоро их выучу, но не сегодня вечером. Так что, если есть способ сделать это без них, это было бы здорово…
Заранее спасибо за вашу помощь!! ЭРИк
Комментарии:
1. Каков ваш текущий код без настройки поворота JavaScript?
2. Я понятия не имею, как разместить код, чтобы он был выделен синим цветом. Я вижу код каждого тела вот так. У меня мало что есть, кроме двух раундов divs. первый — это голова. Второе включение, решка, поворачивается на 180 градусов. Оба имеют «backface-видимость: скрытая».
3. Я хочу перевернуть их 10 или 11 раз в зависимости от случайного выбора javascript. Я выяснил, как изменить стиль элемента с помощью JS. Но я не мог понять, как повернуть элемент.
Ответ №1:
Могу ли я использовать переменную js в качестве значения для «transform: rotateX(‘js var here’)» в css?
Нет, но почти… Что вы могли бы сделать, это использовать переменную CSS, подобную so transform: rotateX(var(--rotate))
, и установить значение этой переменной с помощью javascript, например, так coin.style.setProperty('--rotate', rotate)
, где coin
находится ваш узел монеты и rotate
значение, которое вы хотите передать (например 1800deg
, или 1980deg
).
const coin = document.getElementById('coin');
document.getElementById('flip').addEventListener('click', evt => {
const rotate = 180 * ((Math.random() < .5) ? 10 : 11);
coin.style.setProperty('--rotate', `${rotate}deg`);
});
document.getElementById('reset').addEventListener('click', evt => {
coin.style.setProperty('--rotate', '');
});
#coin {
width: 80px;
height: 80px;
border-radius: 50px;
background-color: #ffd300;
border: 8px solid #ff8d00;
text-align: center;
line-height: 80px;
font-family: sans-serif;
font-weight: bold;
font-size: 50px;
transform: rotateX(var(--rotate, 0));
transition: 4s;
}
<section>
<div id="coin">H</div>
<p>
<button id="flip">Flip</button>
<button id="reset">Reset</button>
</p>
</section>
Комментарии:
1. о! хорошо… Я вижу! Поэтому, когда я нажимаю кнопку «filp», JS возвращает количество градусов этой переменной css и активирует поворот. Это кажется выполнимым… Большое вам спасибо! Я никогда не слышал о переменных css.. И каков самый простой способ активировать вращение? Я обычно использую .mydiv:active{transform …} может ли JS возвращать «активное» значение элементу?
2. Под «активировать» вы подразумеваете запуск вращения? В этом случае я бы сказал, с помощью кнопки. Прослушайте событие щелчка по кнопке, после отправки этого события вычислите поворот и установите переменную CSS. Я обновил фрагмент в ответе