Вы можете использовать CSS-свойство backface-visibility в сочетании с функциями transform для создания потрясающего эффекта переворачивания и вращения без использования JavaScript.

В следующем примере есть два изображения, одно — лицевая сторона, а другое — обратная сторона покерной карты. Обратная сторона карты помещается поверх лицевой с использованием метода позиционирования CSS, так что вначале видна только одна сторона карты.

Когда вы помещаете курсор на обратную сторону карты, она вращается, и отображается лицевая сторона карты. Видимость задней поверхности элемента скрыта, так что задняя сторона перевернутого элемента не отображается во время преобразования, что создает иллюзию трехмерного вращения. Давайте попробуем понять, как именно работает трехмерное переворачивание:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSS 3D Rotation on Mouseover</title>
<style>
    .flip-container {
        margin: 50px;
        perspective: 1000;
        display: inline-block;
    }
    .flip-container:hover .card {
        transform: rotateY(180deg);
    }
    .card, .front, .back {
        width: 130px;
        height: 195px;
    }
    .card {
        transition: 0.5s;
        transform-style: preserve-3d;
        position: relative;
    }
    .front, .back {
        backface-visibility: hidden;
        position: absolute;
    }
    .front {
        z-index: 1;
        transform: rotateY(180deg);
        background: url("images/card-front.jpg") no-repeat;
    }
    .back {
        z-index: 2; /* задняя сторона, размещенная над передней */
        transform: rotateY(0deg);
        background: url("images/card-back.jpg") no-repeat;
    }
</style>
</head>
<body>
    <div class="flip-container">
        <div class="card">
            <div class="front">
                <!-- содержимое лицевой стороны -->
            </div>
            <div class="back">
                <!-- содержимое обратной стороны -->
            </div>
        </div>
    </div>
</body>
</html>

Вы также можете использовать два разных элемента <img> для отображения лицевой и оборотной стороны карточки вместо использования свойства background. Но в этом случае пользователь может увидеть некоторый рывок в начале переворота, потому что для загрузки изображения потребуется некоторое время.

Просто замените функцию преобразования с rotateY() на rotateX(), чтобы создать вертикальное переворачивание. Вы также можете поместить текст или другие элементы внутри контейнеров .front и .back, чтобы сократить этот пример.

3D перелистывание в Internet Explorer

Приведенный выше пример не будет работать в Internet Explorer должным образом из-за отсутствия поддержки свойства transform CSS3. Однако, одновременно переворачивая передний и задний элементы, мы можем добиться того же эффекта, что и в предыдущем примере. Этот пример будет работать в IE10 и выше.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSS 3D Revolving in IE</title>
<style>
    .flip-container {
        margin: 50px;
        perspective: 1000;
        display: inline-block;
    }
    .flip-container:hover .back {
        transform: rotateY(180deg);
    }
    .flip-container:hover .front {
        transform: rotateY(0deg);
    }
    .flip-container, .front, .back {
        width: 130px;
        height: 195px;
    }
    .card {
        transition: 0.6s;
        transform-style: preserve-3d;
        position: relative;
    }
    .front, .back {
        position: absolute;
        backface-visibility: hidden;
        transition: 0.6s;
        transform-style: preserve-3d;
    }
    .front {
        z-index: 1;
        transform: rotateY(-180deg);
        background: url("images/card-front.jpg") no-repeat;
    }
    .back {
        z-index: 2;
        transform: rotateY(0deg);
        background: url("images/card-back.jpg") no-repeat;
    }
</style>
</head>
<body>
   <div class="flip-container">
    <div class="card">
        <div class="front">
            <!-- содержимое лицевой стороны -->
        </div>
        <div class="back">
            <!-- содержимое обратной стороны -->
        </div>
    </div>
</div>
</body>
</html>

Читайте также

Похожие посты

Как определить или создать таблицу стилей только для Internet Explorer

Поддержка старых версий IE — головная боль для разработчиков сайтов. В большинстве случаев вы не сможете избежать этого из-за требований проекта или из-за того, что ваш клиент все еще использует старую версию Internet Explorer. Каждая версия IE ведет себя несколько иначе, чем другие. Первое, что нам нужно, это определить отдельные таблицы стилей для разных версий…

Как отключить выделение выделения текста в браузерах с помощью CSS

По умолчанию, когда вы выделяете текст в браузере, он обычно выделяется синим цветом. Но вы можете отключить это выделение с помощью псевдоэлемента CSS ::selection. В настоящее время браузеры поддерживают только небольшое подмножество CSS-свойств для псевдоэлемента ::selection, например color, background-color и text-shadow. Вот пример:

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.