css3旋轉的盒子

工做中一直作普通的網頁,今天瀏覽到一篇作3d旋轉的盒子的效果,感受挺好玩,因而跟着教程練了練,在此作個記錄
htmlcss

<div class='camera'>
    <div class='box'>
        <div class="face face1">1</div>
        <div class="face face2">2</div>
        <div class="face face3">3</div>
        <div class="face face4">4</div>
        <div class="face face5">5</div>
        <div class="face face6">6</div>
    </div>
</div>

camera用來控制景深(perspective)
box包裹立方體六個面
face1-6是立方體的六個面
csshtml

.camera {
    width: 200px;
    height: 200px;
    perspective-origin: center;
    perspective: 200px;
}
.box {
    transform-style:preserve-3d;
    position:relative;
    width:100%;
    height:100%;
    border:1px dashed #000;
}

.face {
    width: 100px;
    height: 100px;
    background: red;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 38px;
    color: white;
    position: absolute;
}
.face1 {
    background: #3498db;
    transform:translateX(50px) translateY(50px) translateZ(50px);
}
.face2 {
    background: #9b59b6;
    transform-origin: 0 0;  //設置transform的基準點
    transform:translateX(150px) translateY(50px) translateZ(50px) rotateY(90deg);
}
//transform是有順序的,先旋轉再平移和先平移再旋轉的效果可能不一樣
.face3 {
    background: #f1c40f;
    transform-origin: 0 0;
    transform:translateX(50px) translateY(50px) translateZ(50px) rotateX(-90deg);
}
.face4 {
    background: #7f8c8d;
    transform-origin: 0 0;
    transform:translateX(50px) translateY(150px) translateZ(50px) rotateX(-90deg);
}
.face5 {
    background: #2ecc71;
    transform-origin: 100% 100%;
    transform: translateX(-50%) translateY(50px) translateZ(50px) rotateY(-90deg);
}
.face6 {
    background: #34495e;
    transform: translateX(50px) translateY(50px)  translateZ(-50px) rotateY(-180deg);
}
//作一個旋轉的動畫,看看6個面寫的是否正確
.box {
    animation: rotate 4s linear infinite ;
}

@keyframes rotate{
     0%{
         -webkit-transform:rotateY(0) rotateX(0);
     }
     50%{
         -webkit-transform:rotateY(-359.9deg) rotateX(0);
     }
     100% {
         -webkit-transform:rotateY(-359.9deg) rotateX(-359.9deg);
     }
}

若是是手機觀看的話,增長陀螺儀效果顯得更nice
jsweb

var box = document.querySelectorAll('.box');
window.addEventListener('deviceorientation', function(event) {
    var alpha = event.alpha,
        beta = event.beta,
        gamma = event.gamma;

    box[0].style.webkitTransform = 'rotateX(' + beta + 'deg) rotateY(' + gamma + 'deg) rotateZ(' + alpha + 'deg)';
    box[0].style.transform = 'rotateX(' + beta + 'deg) rotateY(' + gamma + 'deg) rotateZ(' + alpha + 'deg)';
    box[0].style.mozTransform = 'rotateX(' + beta + 'deg) rotateY(' + gamma + 'deg) rotateZ(' + alpha + 'deg)';

}, false);

附上做者忠告:
人在一個環境下生活過久,就容易產生惰性。由於無論你怎麼活,明天太陽照樣升起。
咱們能作的,就是盡全力不讓本身被這種慢性毒藥所蠱惑,努力,努力衝開束縛你的結界。flex

相關文章
相關標籤/搜索