Флип-карта не переворачивается на мобильном устройстве

Как я могу получить эффект переворота на мобильных устройствах? Он отлично работает на ПК, потому что я использую псевдо-селектор :hover, но на мобильных устройствах он просто переворачивается один раз и переворачивается обратно, только если щелкнуть другую карту. Как добиться полного эффекта флипа на телефонах и планшетах?

.flip-card {
    background-color: transparent;
    width: 300px;
    height: 300px;
    perspective: 1000px;
    margin: 2%;
  }
  
  .flip-card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    text-align: center;
    transition: transform 0.6s;
    transform-style: preserve-3d;
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
  }
  
  .flip-card:hover .flip-card-inner {
    transform: rotateY(180deg);
  }
  
  .flip-card-front, .flip-card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
  
  .flip-card-front {
    background-color: #bbb;
    color: white;
  }
  
  .flip-card-back {
    background-color: #2980b9;
    color: white;
    transform: rotateY(180deg);
  }
  .preiposle{
      display: flex;
      justify-content: space-evenly;
      padding-top: 50px;
      position: relative;
      text-align: center;
      color: white;
      flex-wrap: wrap;
  }

Когда вы хотите, чтобы он перевернулся? Кроме того, пожалуйста, опубликуйте html.

Slava Knyazev 23.12.2020 01:53
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
1
908
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я думаю, вы можете попробовать так.

.flip-card:hover .flip-card-inner::after {
    transform: rotateY(180deg);
}
Ответ принят как подходящий

Откидывание назад при отпускании пальца

Когда вы нажимаете на экран сенсорного устройства, вы должны представить, что ваш теоретический курсор мыши (который не виден) переместился в положение вашего пальца, и когда вы отпустите палец, он останется в этом положении, пока вы не щелкнете в другом месте. Я могу думать о двух решениях:

  1. вы оставляете все как есть, поэтому вам нужно щелкнуть, чтобы вернуть его обратно
  2. или вы поворачиваете его обратно сразу после того, как пользователь отпускает палец (вам нужно оставаться пальцем на экране до тех пор, пока вы хотите, чтобы он был перевернут)

У вас уже есть первое решение, так что вот второе (это решение на скрипке):

let touch_div = document.getElementById('touch_div');
let is_touch_device = false;
let touchstart_event_listener;  // save the event listeners, if you want to delete them later
let touchend_event_listener;    // save the event listeners, if you want to delete them later


if ("ontouchstart" in document.documentElement) {   // check if touch is enabled on device
  is_touch_device = true;
}

if (is_touch_device) {
  touch_div.classList.add('touch-device');  // adds a class to style the div for touch devices
  
  touch_div.addEventListener('touchstart', touchstart_event_listener = () => {  // event listener changes the class to hovered when you put your finger on the div
    touch_div.classList.replace('touch-device', 'touch-device-hovered');
  });
  
  touch_div.addEventListener('touchend', touchend_event_listener = () => {    // event listener changes the class back to not hovered when you release your finger
    touch_div.classList.replace('touch-device-hovered', 'touch-device');
  });
} else {
  touch_div.classList.add('mouse-device');  // adds a class to style the div for mouse devices
}
.mouse-device {
  width: 100px;
  height: 100px;
  background-color: purple;
}
.mouse-device:hover {
  background-color: green;
}
.touch-device {
  margin-top: 10px;
  width: 100px;
  height: 100px;
  background-color: red;
}
.touch-device-hovered {
  margin-top: 10px;
  width: 100px;
  height: 100px;
  background-color: blue;
}
.margin-top {
  margin-top: 10px;
}
<div class = "mouse-device"></div>                  <!-- this will always be a div that changes style on hover -->
<div id = "touch_div" class = "margin-top"></div>     <!-- this will be identical to the first div when you're not on a touch device, but it will change to touch sensitive when you are on a touch device -->

Эти элементы div не переворачиваются, но вы должны увидеть, как можно управлять стилями на сенсорных устройствах.

Ответьте на это, если у вас есть какие-либо вопросы о моем решении.

Я немного изменил ваш код, но вы подали мне идею. Спасибо чувак, продолжай в том же духе!

Aleksandar 24.12.2020 00:31

Спасибо и удачи с вашим проектом; )

Niwo 24.12.2020 00:36

Обновление: я нашел гораздо более простое решение, скрытое с помощью медиа-запроса:

@media only screen and (hover: none){
      // styles go here
}

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