beget banner 468x60beget banner 728x90beget banner 930x180flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180smsc banner 468x60smsc banner 728x90smsc 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>
jivo banner 480x320jivo banner 728x90jivo banner 120x600skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600kwork banner 480x320kwork banner 728x90kwork banner 120x600

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

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

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

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

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

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

Как добавить CSS стили к элементу с дата атрибутом в HTML

Чтобы добавить CSS к <div> с определённым data атрибутом, можно использовать селектор атрибутов в вашем CSS-файле. Вот как это сделать: Объяснение Пример Вот пример, который добавляет стили к вашему <div>: В этом примере <div> с атрибутом data-container=»outer» будет иметь светло-серый фон, рамку и отступы. Текст внутри <div> будет выровнен по центру.
Подробнее

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

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