博客園美化 - 3D立體動畫照片旋轉(HTML5)


    最近發現大佬們博客上絢麗的動態3D立體動畫旋轉照片,感覺很新穎。先看效果圖:

 

Html 代碼如下:

<!DOCTYPE html>
<html>
    <head>
        <title>HTML5 3D立體動畫照片旋轉</title>
        <meta charset="utf-8" />
        <link href="css/style.css" rel="stylesheet" type="text/css" />
        <style text="text/css" >
            /*實現立體效果*/
            .img {
                width: 50px;
                height: 50px;
                margin: 0 auto;
                transform-style: preserve-3d;
                /*設置動畫播放樣式:動畫對象 播放速度 時間 播放次數*/
                animation: rotate linear 20s infinite;
            }
            /*實現動畫效果*/
            @-webkit-keyframes rotate {                /*sofari chrome*/
                from {
                    transform: rotateX(0deg) rotateY(0deg);
                }
                to {
                    transform: rotateX(360deg) rotateY(360deg);
                }
            }
            /*圖片樣式*/
            .pic{
                width: 200px;
                height: 200px;
                transform: rotateY(0deg) translateZ(100px);
            }
        </style>
        <style  type="text/css">
            /*最外層容器樣式*/
            .wrap {
                width: 100px;
                height: 100px;
                margin: 150px;
                position: relative;
            }

            /*得到立方體效果*/
            .cube {
                width: 50px;
                height: 50px;
                margin: 0 auto;
                transform-style: preserve-3d;
                /*設置動畫播放樣式:動畫對象 播放速度 時間 播放次數*/
                animation: rotate linear 20s infinite;
            }

            /*動畫旋轉的方式*/
            /*得到動畫效果*/
            @-moz-keyframes rotate {                     /*firefox*/
                from {
                    transform: rotateX(0deg) rotateY(0deg);
                }
                to {
                    transform: rotateX(360deg) rotateY(360deg);
                }
            }
            @-webkit-keyframes rotate {                /*sofari chrome*/
                from {
                    transform: rotateX(0deg) rotateY(0deg);
                }
                to {
                    transform: rotateX(360deg) rotateY(360deg);
                }
            }
            @-o-keyframes rotate {                    /*opera*/
                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: block;
                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);
            }
        </style>
        
        <script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
    </head>
    <body>
        <div class="wrap">
            <!--部署內外層圖片-->
            <div class="cube">
                <!--前面圖片 -->
                <div class="out_front">
                    <img src="https://i.loli.net/2018/10/04/5bb5f270969f2.jpeg" class="pic">
                </div>
                <!--后面圖片 -->
                <div class="out_back">
                    <img src="https://i.loli.net/2018/10/04/5bb5f23ce7f1e.jpg" class="pic">
                </div>
                <!--左面圖片 -->
                <div class="out_left">
                    <img src="https://i.loli.net/2018/10/04/5bb5f26e13b28.jpg" class="pic">
                </div>
                <!--右面圖片 -->
                <div class="out_right">
                    <img src="https://i.loli.net/2018/10/07/5bb9b1ca97948.jpg" class="pic">
                </div>
                <!--上面圖片 -->
                <div class="out_top">
                    <img src="https://i.loli.net/2018/10/04/5bb5f2725c5c7.jpg" class="pic">
                </div>
                <!--下面圖片 -->
                <div class="out_bottom">
                    <img src="https://i.loli.net/2018/10/04/5bb5f27af2e28.jpg" class="pic">
                </div>
                <!--小正方體 --> 
                <span class="in_front">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2e441d7a.jpg" class="in_pic">
                </span>
                
                <span class="in_back">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2e712b3f.jpg" class="in_pic">
                </span>
                
                <span class="in_left">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2e86ad25.jpg" class="in_pic">
                </span>
                
                <span class="in_right">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2eaba148.jpg" class="in_pic">
                </span>
                
                <span class="in_top">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2ebe5bd9.jpg" class="in_pic">
                </span>
                <span class="in_bottom">
                    <img src="https://i.loli.net/2018/10/07/5bb9b2ed867be.jpg" class="in_pic">
                </span>

            </div>
          
        </div>
    </body>

</html>

 

 

另外附上其簡單實現demo方便大家學習反思。HTML5 代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5 3D立體動畫照片旋轉-原理</title>
    <style text="text/css" >
        .container{
            width: 200px;
            height: 200px;
            position: relative;
            margin:50px auto;
            transform: rotateY(15deg) rotateX(-15deg);
            transform-style: preserve-3d;
            animation:xuanzhuan 8s linear infinite;
        }
        @keyframes xuanzhuan{
            0%{
                transform: rotateY(15deg) rotateX(45deg);
            }
            50%{
                transform: rotateY(375deg) rotateX(-45deg);
            }
            100%{
                transform: rotateY(735deg) rotateX(45deg);
            }
        }
        .container:hover{
            animation-play-state: paused;
        }
        .container div.front{
            background: red;
            transform: translateZ(100px);
        }
        .container div.back{
            background: green;
            transform: translateZ(-100px) rotateY(180deg);
        }
        .container div.left{
            background: blue;
            transform:translateX(-100px) rotateY(-90deg);
        }
        .container div.right{
            background: yellow;
            transform:translateX(100px) rotateY(90deg);
        }
        .container div.top{
            background: pink;
            transform:translateY(-100px) rotateX(90deg);
        }
        .container div.bottom{
            background: orange;
            transform:translateY(100px) rotateX(-90deg);
        }
        .container div{
            position: absolute;
            left:0;
            top:0;
            width: 200px;
            height: 200px;
            line-height: 200px;
            text-align: center;
            font-size: 40px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="front">front</div>
        <div class="back">back</div>
        <div class="left">left</div>
        <div class="right">right</div>
        <div class="top">top</div>
        <div class="bottom">bottom</div>
    </div>
</body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM