サンプルはこちら。
See the Pen yozsJ by Kazuyoshi Goto (@KazuyoshiGoto) on CodePen.
前回は複数の円状レイヤーのY軸を回転させたものを紹介していましたが、今回はZ軸(前後)の押し出しを使うことで完全な3D状態になっています。
HTML
<article class="cube"> <div class="face1">上面</div> <div class="face2">下面</div> <div class="face3">前面</div> <div class="face4">後面</div> <div class="face5">左面</div> <div class="face6">右面</div> </article>
立方体は6つの面があるので、レイヤーもその分必要になります。
CSS(Sass)
$size: 200px; .cube { display: block; position: relative; margin: 50px auto; width: $size; height: $size; line-height: $size; text-align: center; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; @include animation(rotate 10s infinite linear); } [class*=face] { position: absolute; width: $size; height: $size; border: solid 1px #fff; background-color: rgba(#fff,.2); } .face1 { @include transform(rotateX(90deg) translateZ($size/2)); } ~ @-webkit-keyframes rotate { 0% {@include transform(rotateY(0deg) rotateZ(0deg))} 100% {@include transform(rotateY(360deg) rotateZ(360deg))} }
「.cube」は立方体全体のサイズを固定し、アニメーション対象とする設定にしています。
また「transform-style: perseve-3d」というプロパティを設定しています。これは3D状に表示されるようするための設定となります。
次の「[class*=face]」で面全体の共通設定を行っています。
次に「.face1~6」の設定を行っています。
「rotateX」でX軸中心に90度回転させると、立っていた面は横に寝ます。それをZ軸方向に進ませると上に上がる形になります。face1の場合は立方体の上面になる設定です。
立方体の下面であればZ軸を下げる形で、左右の面はX軸の代わりにY軸90度で左右に向けてZ軸移動し、前後の面はZ軸のみで前後に出すだけです。
最後の「keyframes」でY軸とZ軸で360度回転するアニメーション設定を行っています。