CSS3 3D酷炫立方體變換動畫

我愛擼碼,擼碼使我感到快樂!

大家好,我是Counter,本章微博主要利用了CSS3的一些新特性,

主要用到關鍵幀來使3D圖形運動起來,涉及到了一些抽象的思想,立體的想象。

先給大家看看完成的效果,代碼也不是很難,每行代碼都給到了詳細註釋,純CSS,沒有用到JS,CSS3不錯。

效果如下:

 

 

每一行基本都有註釋,就不重複說了,代碼如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>3D旋轉</title>
    <style>
        /* 給最外層父級設置景深,讓裏面的元素有立體的空間,並且設置寬高 */
        .wrapper {
            /* 景深600像素 */
            perspective: 500px;
            /* 設置margin距離上面100px,左右自適應,下面0 */
            margin: 100px auto 0;
            width: 200px;
            height: 200px;
            /* border: 1px solid black; */
        }
        
        .box {
            /* 設置相對定位好讓子元素相對於自己定位 */
            position: relative;
            /* 給item設置保留3D效果,如果沒有設置裏面的元素將不會呈現3D效果 */
            transform-style: preserve-3d;
            width: 200px;
            height: 200px;
            /* move爲設置的關鍵幀,運動8秒,勻速運動,無限次(各個參數代表的含義) */
            animation: move 8s linear infinite;
        }

        /* 選擇所有開頭帶有item的元素,使其全部定位到父級所在的位置 */
        div[class^="item"] {
            position: absolute;
            top: 0;
            left: 0;
            width: 200px;
            height: 200px;
            /* 使文本左右對齊 */
            text-align: center;
            /* 使文本上下對齊 */
            line-height: 200px;
        }

        /* 立方體有六面,每個item1~6代表每一面,此時裏面的item1~6具有三條軸,x,y,z */
        /* x軸即是你電腦屏幕寬度的那條軸,從左到右。y軸即是你電腦屏幕高度的那條軸,從上到下。z軸即是你眼睛垂直看電腦屏幕的那條軸,方向從電腦屏幕到你的眼睛*/
        /* 設置第一面 */
        .item1 {  
            /* 沿z軸向你眼睛方向移動100px */
            transform: translateZ(100px);
            /* 設置背景顏色,最後一個參數爲透明度設置爲0.6 */
            background-color: rgba(255, 0, 0, 0.6);
        }
        /* 設置第二面 */
        .item2 {
            /* 沿z軸向裏移動100px即爲-100px */
            transform: translateZ(-100px);
            background-color: rgba(72, 42, 245, 0.6);
        }
        /* 設置第三面 */
        .item3 {
            /* 沿x軸旋轉90度,然後再向z軸移動100px(deg在這裏表示度的意思) */
            transform: rotateX(90deg) translateZ(100px);
            background-color: rgba(217, 230, 36, 0.6);
        }
        /* 設置第四面 */
        .item4 {
            /* 沿x軸旋轉90度,然後再向z軸移動-100px */
            transform: rotateX(90deg) translateZ(-100px);
            background-color: rgba(58, 7, 51, 0.6);
        }
        /* 設置第五面 */
        .item5 {
            /* 沿y軸旋轉90度,然後再向z軸移動-100px */
            transform: rotateY(90deg) translateZ(-100px);
            background-color: rgba(241, 142, 75, 0.6);
        }
        /* 設置第六面 */
        .item6 {
            /* 沿y軸旋轉90度,然後向z軸移動100px */
            transform: rotateY(90deg) translateZ(100px);
            background-color: rgba(125, 178, 238, 0.6);
        }

        /* 設置關鍵幀讓box容器旋轉起來,分別沿x,y,z軸從0旋轉360度 */
        @keyframes move {
            0% {
                transform: rotateX(0) rotateY(0) rotateZ(0);
            }
            100% {
                transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="box">
            <div class="item1">1</div>
            <div class="item2">2</div>
            <div class="item3">3</div>
            <div class="item4">4</div>
            <div class="item5">5</div>
            <div class="item6">6</div>
        </div>
    </div>
</body>
</html>

 

原文出處:https://www.cnblogs.com/Counterrr/p/10597711.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章