beget banner 468x60beget banner 728x90beget banner 930x180kwork banner 468x60kwork banner 728x90kwork banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180

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

Вы можете использовать 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>
skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600smsc banner 480x320smsc banner 728x90smsc banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600

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

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

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

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

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

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

Как анимировать фоновый цвет элемента при наведении курсора мыши с помощью CSS

Вы можете использовать CSS-свойство transition, чтобы плавно анимировать background-color элемента при наведении курсора мыши. Давайте посмотрим пример, чтобы понять, как это работает:
Подробнее

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

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

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

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