Создаём эффект 3D карточки на чистом CSS — PROG-TIME

Создаём эффект 3D карточки на чистом CSS

01.06.2019
Содержание:

Всем привет в данной записи я вам покажу как создать эффект 3D карточки на чистом CSS. Это эффект который будет переворачивать элемент на 180 градусов и показывать его оборотную часть.

Логика такая…у карточки будет 2 элемента, элемент который выводит переднюю часть и элемент который выводит заднюю часть. При наведении на карточку, задняя часть и передняя часть будут поворачивать и тем самым заменять друг друга.

Передняя сторона
Задняя сторона

HTML

Здесь мы прописываем основной контейнер, контейнер для карточки, а внутри контейнера для карточки прописываем заднюю и переднюю часть.

<div class="card_cantainer">
  <!-- КАРТОЧКА -->
  <div class="card">
    <!-- ЛИЦЕВАЯ СТОРОНА -->
    <div class="front_side"><span>Передняя сторона</span></div>
    <!-- ТЫЛЬНАЯ СТОРОНА -->
    <div class="back_side"><span>Задняя сторона</span></div>
  </div>
</div>

CSS

Здесь мы прописываем стили для основных блоков. В самом низу прописываем hover эффект, который будет срабатывать после наведения на элемент курсором мыши.

При наведение мы будем поворачивать 2 элемента так чтобы они закрывали друг друга, а их задние стороны мы будем скрывать.

.card_cantainer {
  position: absolute; //указывает, что элемент абсолютно позиционирован
  width: 100%; //ширина
  height: 100%; //высота
  left: 0; //отступ слева
  top: 0; //отступ сверху
  background-color: #BBDEFB; //задний фон
  display: flex;
  justify-content: center; //выравниваем по горизонтали
  align-items: center; //выравниваем по вертикали
}
.card {
  width: 300px;
  height: 300px;
  position: relative; //Положение элемента устанавливается относительно его исходного места
  perspective: 1000px;
}
.front_side, .back_side {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: 1s; //задаем плавность анимации
  backface-visibility: hidden; //указываем чтобы тыльная сторона была прозрачной
  border-radius: 10px;
}
.front_side {
  background-color: #fff;
}
.back_side {
  background-color: #BDBDBD;
  transform: rotateY(180deg); //поворачиваем элемент на указанное количество градусов
}
.card:hover .front_side {transform: rotateY(180deg);}
.card:hover .back_side {transform: rotateY(360deg);}