2013年7月31日追記: transform-styleの指定を適切なセレクタに移動。Firefox、Opera、IE用の記述も追加。
Safari、Chrome、Firefox、Opera、IE用のCSS3 3D Transforms Module 3の表示テスト。 2013年7月31日現在、ChromeとFirefoxではZバッファがおかしい、Operaは3次元回転しない、IEはチェックしていないがIE10では動くという情報もある。
ちなみに、Safariでも、Windowsだとグラフィックカードなどによっては3D表示に対応しない: 「CSS3の3D表示機能が、実はSafariでも使えないことがある件 」
コードは以下。
CSS
#wrapper {
position: relative;
width: 200px;
height: 200px;
padding: 50px;
border: 1px solid black;
transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
}
#panel1, #panel2 {
position: absolute;
width: 200px;
height: 200px;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-duration: 8s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-webkit-animation-duration: 8s;
-moz-animation-iteration-count: infinite;
-moz-animation-timing-function: linear;
-moz-animation-duration: 8s;
-o-animation-iteration-count: infinite;
-o-animation-timing-function: linear;
-o-animation-duration: 8s;
-ms-animation-iteration-count: infinite;
-ms-animation-timing-function: linear;
-ms-animation-duration: 8s;
}
#panel1 {
background-color: red;
animation-name: rotate1;
-webkit-animation-name: rotate1;
-moz-animation-name: rotate1;
-o-animation-name: rotate1;
-ms-animation-name: rotate1;
}
#panel2 {
background-color: blue;
animation-name: rotate2;
-webkit-animation-name: rotate2;
-moz-animation-name: rotate2;
-o-animation-name: rotate2;
-ms-animation-name: rotate2;
}
@keyframes rotate1 {
0% { transform: perspective(100px) translateZ(-100px) rotateY(90deg) }
50% { transform: perspective(100px) translateZ(-100px) rotateY(270deg) }
100% { transform: perspective(100px) translateZ(-100px) rotateY(450deg) }
}
@keyframes rotate2 {
0% { transform: perspective(100px) translateZ(-100px) rotateY(0deg) }
50% { transform: perspective(100px) translateZ(-100px) rotateY(180deg) }
100% { transform: perspective(100px) translateZ(-100px) rotateY(360deg) }
}
@-webkit-keyframes rotate1 {
0% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(90deg) }
50% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(270deg) }
100% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(450deg) }
}
@-webkit-keyframes rotate2 {
0% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(0deg) }
50% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(180deg) }
100% { -webkit-transform: perspective(100px) translateZ(-100px) rotateY(360deg) }
}
@-moz-keyframes rotate1 {
0% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(90deg) }
50% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(270deg) }
100% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(450deg) }
}
@-moz-keyframes rotate2 {
0% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(0deg) }
50% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(180deg) }
100% { -moz-transform: perspective(100px) translateZ(-100px) rotateY(360deg) }
}
@-o-keyframes rotate1 {
0% { -o-transform: perspective(100px) translateZ(-100px) rotateY(90deg) }
50% { -o-transform: perspective(100px) translateZ(-100px) rotateY(270deg) }
100% { -o-transform: perspective(100px) translateZ(-100px) rotateY(450deg) }
}
@-o-keyframes rotate2 {
0% { -o-transform: perspective(100px) translateZ(-100px) rotateY(0deg) }
50% { -o-transform: perspective(100px) translateZ(-100px) rotateY(180deg) }
100% { -o-transform: perspective(100px) translateZ(-100px) rotateY(360deg) }
}
@-ms-keyframes rotate1 {
0% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(90deg) }
50% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(270deg) }
100% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(450deg) }
}
@-ms-keyframes rotate2 {
0% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(0deg) }
50% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(180deg) }
100% { -ms-transform: perspective(100px) translateZ(-100px) rotateY(360deg) }
}
HTML
<div id="wrapper"> <div id="panel1"> </div> <div id="panel2"> </div> </div>
0 件のコメント:
コメントを投稿