【炫酷前端】抖音很火的3d旋转相册

  1. 效果1
    在这里插入图片描述

  2. 步骤
    准备12张图片,大小最好是正方形(尽量1:1,不然变形不好看),放到img文件夹中。
    在这里插入图片描述

  3. css文件夹:index.css

    html{
        background: #000;
        height: 100%;    
    }
    /*最外层容器样式*/
    .wrap{
        position: relative;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        width: 200px;
        height: 200px;
        margin: auto;
        /*改变左右上下,图片方块移动*/
        
    }
    /*包裹所有容器样式*/
    .cube{
        width: 200px;
        height: 200px;
        margin: 0 auto;
        transform-style: preserve-3d;
        transform: rotateX(-30deg) rotateY(-80deg);
        -webkit-animation: rotate 20s infinite;
        /*匀速*/
        animation-timing-function: linear;
    }
    @-webkit-keyframes rotate{
        from{transform: rotateX(0deg) rotateY(0deg);}
        to{transform: rotateX(360deg) rotateY(360deg);}
    }
    .cube div{
        position: absolute;
        width: 200px;
        height: 200px;
        opacity: 0.8;
        transition: all .4s;
    }
    /*定义所有图片样式*/
    .pic{
        width: 200px;
        height: 200px;
    }
    .cube .out_front{
        transform: rotateY(0deg) translateZ(100px);
    }
    .cube .out_back{
        transform: translateZ(-100px) rotateY(180deg);
    }
    .cube .out_left{
        transform: rotateY(90deg) translateZ(100px);
    }
    .cube .out_right{
        transform: rotateY(-90deg) translateZ(100px);
    }
    .cube .out_top{
        transform: rotateX(90deg) translateZ(100px);
    }
    .cube .out_bottom{
        transform: rotateX(-90deg) translateZ(100px);
    }
    /*定义小正方体样式*/
    .cube span{
        display: bloack;
        width: 100px;
        height: 100px;
        position: absolute;
        top: 50px;
        left: 50px;
    }
    .cube .in_pic{
        width: 100px;
        height: 100px;
    }
    .cube .in_front{
        transform: rotateY(0deg) translateZ(50px);
    }
    .cube .in_back{
        transform: translateZ(-50px) rotateY(180deg);
    }
    .cube .in_left{
        transform: rotateY(90deg) translateZ(50px);
    }
    .cube .in_right{
        transform: rotateY(-90deg) translateZ(50px);
    }
    .cube .in_top{
        transform: rotateX(90deg) translateZ(50px);
    }
    .cube .in_bottom{
        transform: rotateX(-90deg) translateZ(50px);
    }
    /*鼠标移入后样式*/
    .cube:hover .out_front{
        transform: rotateY(0deg) translateZ(200px);
    }
    .cube:hover .out_back{
        transform: translateZ(-200px) rotateY(180deg);
    }
    .cube:hover .out_left{
        transform: rotateY(90deg) translateZ(200px);
    }
    .cube:hover .out_right{
        transform: rotateY(-90deg) translateZ(200px);
    }
    .cube:hover .out_top{
        transform: rotateX(90deg) translateZ(200px);
    }
    .cube:hover .out_bottom{
        transform: rotateX(-90deg) translateZ(200px);
    }
    
  4. html文件:index.html

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>photo-3d</title>
            <link rel="stylesheet" href="css/index.css" />
        </head>
        <body>
            <!--/*外层最大容器*/-->
            <div class="wrap">
        <!--    /*包裹所有元素的容器*/-->
            <div class="cube">
                <!--前面图片 -->
                <div class="out_front">
                    <img src="img/1.jpg"  class="pic"/>
                </div>
                <!--后面图片 -->
                <div class="out_back">
                    <img src="img/2.jpg"  class="pic"/>
                </div>
                <!--左图片 -->
                <div class="out_left">
                    <img src="img/3.jpg"  class="pic"/>
                </div>
                <div class="out_right">
                    <img src="img/4.jpg"  class="pic"/>
                </div>
                <div class="out_top">
                    <img src="img/5.jpg"  class="pic"/>
                </div>
                <div class="out_bottom">
                    <img src="img/6.jpg"  class="pic"/>
                </div>
                <!--小正方体 --> 
                <span class="in_front">
                    <img src="img/7.jpg" class="in_pic" />
                </span>
                <span class="in_back">
                     <img src="img/8.jpg" class="in_pic" />
                </span>
                <span class="in_left">
                    <img src="img/9.jpg" class="in_pic" />
                </span>
                <span class="in_right">
                    <img src="img/10.jpg" class="in_pic" />
                </span>
                <span class="in_top">
                    <img src="img/11.jpg" class="in_pic" />
                </span>
                <span class="in_bottom">
                    <img src="img/12.jpg" class="in_pic" />
                </span>
            </div>
            </div>
        </body>
    </html>
    
  5. 文件结构:
    在这里插入图片描述
    弄好之后打开index.html就行了。

不想整理的直接下载代码吧:
一下两份代码都是一样的,只是尺寸大小不一样。
小尺寸版,博客中的代码
大尺寸版

或者评论留下邮箱,我看到会把代码发过来的啦~

  • 63
    点赞
  • 233
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 243
    评论
实现炫酷抖音女友3D旋转相册特效,需要掌握CSS3的一些基本动画和转换属性。首先需要准备照片,然后将照片放在一个容器中,设置容器的宽度、高度、视距、景深。接下来,需要使用CSS3的旋转属性将照片进行旋转,同时使用缩放属性进行3D效果的实现。最后再使用CSS3的动画属性和过渡属性,使照片在旋转的过程中呈现出平滑、连贯的效果。具体实现步骤和样式代码如下所示: 1. 创建一个容器,设置容器的宽度、高度、视距和景深。 ``` .container { width: 600px; height: 400px; perspective: 1000px; -webkit-perspective: 1000px; perspective-origin: 50% 50%; -webkit-perspective-origin: 50% 50%; } ``` 2. 在容器中添加多个照片,将它们定位在正中心,并设置它们的宽度和高度。 ``` .photo { position: absolute; top: 50%; left: 50%; margin-top: -150px; margin-left: -200px; width: 400px; height: 300px; background-size: cover; background-position: center center; transform-style: preserve-3d; -webkit-transform-style: preserve-3d; } ``` 3. 使用CSS3的旋转属性,使照片在Z轴上进行旋转,并使用缩放属性使照片产生3D效果。 ``` .photo:nth-child(1) { transform: rotateY(0deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(0deg) translateZ(250px) scale(0.8); } .photo:nth-child(2) { transform: rotateY(60deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(60deg) translateZ(250px) scale(0.8); } .photo:nth-child(3) { transform: rotateY(120deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(120deg) translateZ(250px) scale(0.8); } .photo:nth-child(4) { transform: rotateY(180deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(180deg) translateZ(250px) scale(0.8); } .photo:nth-child(5) { transform: rotateY(240deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(240deg) translateZ(250px) scale(0.8); } .photo:nth-child(6) { transform: rotateY(300deg) translateZ(250px) scale(0.8); -webkit-transform: rotateY(300deg) translateZ(250px) scale(0.8); } ``` 4. 使用CSS3的动画属性和过渡属性,使照片具有平滑、连贯的旋转效果。 ``` .photo:hover { animation: rotate 10s infinite linear; -webkit-animation: rotate 10s infinite linear; transition: all 0.5s ease-in-out; -webkit-transition: all 0.5s ease-in-out; } @keyframes rotate { 0% { transform: rotateY(0deg); } 100% { transform: rotateY(360deg); } } @-webkit-keyframes rotate { 0% { -webkit-transform: rotateY(0deg); } 100% { -webkit-transform: rotateY(360deg); } } ``` 这样就可以实现抖音女友3D旋转相册的特效了。通过使用CSS3的旋转、缩放、动画和过渡属性,可以轻松实现多种炫酷的效果,为网页添加生动、有趣的视觉体验。
评论 243
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦游人布拿拿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值