Как применить преобразование CSS, если у меня было преобразование при наведении?

Я сделал группу элементов и установил наведение для их класса

.cards:hover {
    transition: 0.2s;
    transform: translate( 0px, -50px);
    height: 180px;
    width: 120px;
    background-size: 120px 180px;
}

В классе 10 элементов, и у меня есть файл JS, который при щелчке выделяет элемент, и я хочу, чтобы он вращался, поэтому я пишу JS и говорю ему добавить преобразование после щелчка, например

document.getElementById(idTag).style.transition = "3s ease";
document.getElementById(idTag).style.transform = "rotate(270deg)";

но не крутит. Вместо этого он идет прямо на 270 градусов по кратчайшему пути. Если я удаляю преобразование из наведения, оно вращается как обычно, но если у меня есть преобразование при наведении, оно не работает. Есть конфликт или что-то с эффектом наведения?

Почему бы вам просто не добавить класс к элементу и оставить CSS для CSS?

Justinas 04.02.2019 16:21

повернуть родительский элемент

Temani Afif 04.02.2019 16:23

У меня есть контейнер с 10 элементами, и я хочу, чтобы щелкнуть только один из элементов, чтобы что-то сделать, а другой остался нетронутым. Как взять 1 карту из разложенной колоды карт. Так что мне нужно сделать это индивидуально. Все работает без преобразования :hover, и я хочу знать, почему...

T. Jefferds 04.02.2019 16:30

причина в том, что вы переопределяете преобразование, устанавливая встроенное преобразование. Вот почему вам нужно иметь дело с классами и CSS

Temani Afif 04.02.2019 16:38

Вы переопределяете многие вещи, почему это проблема? Чувак, ты ничем не помогаешь, извини. И я занимаюсь классами

T. Jefferds 04.02.2019 16:46

Вы наводите курсор или кликаете? Выбери один.

GifCo 04.02.2019 17:36

Свойство перехода должно быть на .cards, а не на .cards:hover

Dominic 04.02.2019 17:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
472
2

Ответы 2

Чтобы переходить вертикальное смещение (перевод) и вращение отдельно, вам, вероятно, следует использовать другой способ перемещения элемента вверх. Использование свойства top и относительной позиции. Тогда у вас может быть следующий код css...

.cards {
    position: relative;
    transition: top 0.2s, transform 3s ease;
    height: 180px;
    width: 120px;
    background-size: 120px 180px;
    top: 0px;
    transform: rotate(0deg);
}

.cards:hover {
    top: -50px;
}

.cards.rotate {
    transform: rotate(270deg);
}

И следующий код в вашем прослушивателе кликов, чтобы добавить класс поворота для поворота после щелчка.

document.getElementById(idTag).classList.add('rotate')

Теперь карточки должны двигаться вверх при наведении, но вращаться при клике с разными скоростями.

Спасибо за ответ, я сделал это с ключевыми кадрами.

T. Jefferds 04.02.2019 20:59

Ах, хорошо, может быть, опубликовать это как ответ :-)

Fabian Hijlkema 04.02.2019 21:25
    function drawCard() {
  var Deck = document.getElementsByClassName("cards");
  var idTag = this.id;
  document.getElementById(idTag).classList.remove("cards");
  document.getElementById(idTag).classList.add("draw-card");

  for (i = 0; i < Deck.length; i++) {
    Deck[i].style.display = "none";
  }

  document.getElementById(idTag).style.transition = "2s";
  document.getElementById(idTag).style.left = "100px";
  document.getElementById(idTag).style.animation = "rotate 2s linear forwards";

при щелчке я отделяю выбранную карту, меняя класс, а затем прокручиваю остальную часть класса, чтобы остальные карты исчезли. После этого я добавляю анимацию поворота с ключевыми кадрами в CSS.

    @keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
  }

Другие вопросы по теме