纯CSS3制作3D旋转照片

纯CSS3制作3D旋转照片

一、搭建项目的基本结构

Visual Studio Code编写body代码快捷键:

div.father>div.son$*8

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D旋转照片</title>
    <style>
        *{
     
     
            margin: 0;
            padding: 0;
        }
        :root,body{
     
     
            height: 100%;
            width: 100%;
            background-color: black;
        }
        .father{
     
     
            width: 300px;
            height: 300px;
            position: absolute;
            left: calc(50% - 150px);
            /* 水平居中 */
            top: calc(50% - 150px);
            /* 垂直居中 */
        }
        .father div{
     
     
            width: 300px;
            height: 300px;
            position: absolute;
            background-size: 300px 300px;
        }
        .son1{
     
     
            background-image: url(img/1.jpg);
        }
        .son2{
     
     
            background-image: url(img/2.jpg);
        }
        .son3{
     
     
            background-image: url(img/3.jpg);
        }
        .son4{
     
     
            background-image: url(img/4.jpg);
        }
        .son5{
     
     
            background-image: url(img/5.jpg);
        }
        .son6{
     
     
            background-image: url(img/6.jpg);
        }
        .son7{
     
     
            background-image: url(img/7.jpg);
        }
        .son8{
     
     
            background-image: url(img/8.jpg);
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>
        <div class="son3"></div>
        <div class="son4"></div>
        <div class="son5"></div>
        <div class="son6"></div>
        <div class="son7"></div>
        <div class="son8"></div>
    </div>
</body>
</html>

浏览器运行结果如下:
在这里插入图片描述

二、搭建3D空间,并使用transform把照片调整到指定的位置

代码如下

:root,body{
    
    
            perspective: 5000px;
            perspective-origin: 0 -250px;
        }
.father{
    
    
            transform-style: preserve-3d;
        }
 .son1{
    
    
            transform: rotateY(45deg) translateZ(500px);
        }
.son2{
    
    
            transform: rotateY(90deg) translateZ(500px);
        }
.son3{
    
    
            transform: rotateY(135deg) translateZ(500px);
        }
.son4{
    
    
            transform: rotateY(180deg) translateZ(500px);
        }
.son5{
    
    
            transform: rotateY(225deg) translateZ(500px);
        }
.son6{
    
    
            transform: rotateY(270deg) translateZ(500px);
        }
.son7{
    
    
            transform: rotateY(315deg) translateZ(500px);
        }
.son8{
    
    
            transform: rotateY(360deg) translateZ(500px);
        }

浏览器运行结果如下

在这里插入图片描述

三、添加动画,使父级盒子围绕Y轴旋转360°并匀速重复运动

代码如下

.father{
    
    
            animation: roddy 10s linear infinite;
        }
@keyframes roddy{
    
    
            0%{
    
    
                transform: rotateY(0deg);
            }
            100%{
    
    
                transform: rotateY(360deg);
            }
        }

最终浏览器运行结果如下
在这里插入图片描述

四、完整代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D旋转照片</title>
    <style>
        *{
     
     
            margin: 0;
            padding: 0;
        }
        :root,body{
     
     
            height: 100%;
            width: 100%;
            background-color: black;
            perspective: 5000px;
            perspective-origin: 0 -250px;
        }
        .father{
     
     
            width: 300px;
            height: 300px;
            position: absolute;
            transform-style: preserve-3d;
            left: calc(50% - 150px);
            /* 水平居中 */
            top: calc(50% - 150px);
            /* 垂直居中 */
            animation: roddy 10s linear infinite;
        }
        @keyframes roddy{
     
     
            0%{
     
     
                transform: rotateY(0deg);
            }
            100%{
     
     
                transform: rotateY(360deg);
            }
        }
        .father div{
     
     
            width: 300px;
            height: 300px;
            position: absolute;
            background-size: 300px 300px;
        }
        .son1{
     
     
            background-image: url(img/1.jpg);
            transform: rotateY(45deg) translateZ(500px);
        }
        .son2{
     
     
            background-image: url(img/2.jpg);
            transform: rotateY(90deg) translateZ(500px);
        }
        .son3{
     
     
            background-image: url(img/3.jpg);
            transform: rotateY(135deg) translateZ(500px);
        }
        .son4{
     
     
            background-image: url(img/4.jpg);
            transform: rotateY(180deg) translateZ(500px);
        }
        .son5{
     
     
            background-image: url(img/5.jpg);
            transform: rotateY(225deg) translateZ(500px);
        }
        .son6{
     
     
            background-image: url(img/6.jpg);
            transform: rotateY(270deg) translateZ(500px);
        }
        .son7{
     
     
            background-image: url(img/7.jpg);
            transform: rotateY(315deg) translateZ(500px);
        }
        .son8{
     
     
            background-image: url(img/8.jpg);
            transform: rotateY(360deg) translateZ(500px);
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>
        <div class="son3"></div>
        <div class="son4"></div>
        <div class="son5"></div>
        <div class="son6"></div>
        <div class="son7"></div>
        <div class="son8"></div>
    </div>      
</body>
</html>

猜你喜欢

转载自blog.csdn.net/RoddyLD/article/details/111997558