CSS3的3D转换效果详解介绍:
本章介绍一下CSS3的3D转换效果,此效果的实现依靠的是transform属性,3D转换只是此属性的部分应用,更多相关内容可以参阅CSS3的transform属性总略介绍一章节。
掌握3D转换效果,可以从三个方法作为突破口,分别是rotateX, rotateY, rotateZ,在2D变换过程中rotate()函数的应用,它表示旋转的意思,由于是2D变换,所以它只是在一个平面进行旋转,所以无需细分,具体可以参阅CSS3的2D转换效果详细介绍一章节。 下面分别介绍一下上面的三个旋转方法。
一.rotateX()方法:
1 | <!DOCTYPE html> <html> <head> <meta charset= " utf-8" > <meta name= "author" content= "http://www.softwhy.com/" /> <title>蚂蚁部落</title> <style type= "text/css" > #box{ position:relative; height:200px; width:200px; margin-top:150px; margin-left:150px; border:1px solid black; } #inner{ padding:50px; position:absolute; border:1px solid black; background-color:yellow; font-size:12px; transform-origin:0px 0px; -ms-transform-origin:0px 0px; -webkit-transform-origin:0px 0px; -o-transform-origin:0px 0px; -moztransform-origin:0px 0px; transform:rotateX(0deg); -ms-transform:rotateX(0deg); -webkit-transform:rotateX(0deg); -o-transform:rotateX(0deg); -moz-transform:rotateX(0deg);} table{ font-size:12px; width:300px; margin-left:120px; } .left{text-align:right} </style> <script type= "text/javascript" > function changeRot(value){ var oinner=document.getElementById( 'inner' ); var opersp=document.getElementById( 'persp' ); oinner.style.transform= "rotateX(" + value + "deg)" ; oinner.style.msTransform= "rotateX(" + value + "deg)" ; oinner.style.webkitTransform= "rotateX(" + value + "deg)" ; oinner.style.MozTransform= "rotateX(" + value + "deg)" ; oinner.style.OTransform= "rotateX(" + value + "deg)" ; opersp.innerHTML=value + "deg" ; } window.onload= function (){ var range=document.getElementById( "range" ); range.onmousemove= function (){ changeRot(this.value); } } </script> </head> <body> <div id= "box" > <div id= "inner" >蚂蚁部落</div> </div> <table> <tr> <td class = "left" >旋转:</td> <td><input type= "range" min= "-360" max= "360" id= "range" value= "0" /></td> </tr> <tr> <td class = "left" >rotateX:</td> <td>(<span id= "persp" >0deg</span>)</td> </tr> </table> </body> </html>
|
Copy after login
以上代码演示了rotateX()的作用,他可以控制元素围绕着x轴进行旋转,就像是一个体操运动员,在单杠上旋转一样。
二.rotateY()方法:
1 | <!DOCTYPE html> <html> <head> <meta charset= " utf-8" > <meta name= "author" content= "http://www.softwhy.com/" /> <title>蚂蚁部落</title> <style type= "text/css" > #box{ position:relative; height:200px; width:200px; margin-top:150px; margin-left:150px; border:1px solid black; } #inner{ padding:50px; position:absolute; border:1px solid black; background-color:yellow; font-size:12px; transform-origin:0px 0px; -ms-transform-origin:0px 0px; -webkit-transform-origin:0px 0px; -o-transform-origin:0px 0px; -moztransform-origin:0px 0px; transform:rotateY(0deg); -ms-transform:rotateX(0deg); -webkit-transform:rotateY(0deg); -o-transform:rotateY(0deg); -moz-transform:rotateY(0deg);} table{ font-size:12px; width:300px; margin-left:120px; } .left{text-align:right} </style> <script type= "text/javascript" > function changeRot(value){ var oinner=document.getElementById( 'inner' ); var opersp=document.getElementById( 'persp' ); oinner.style.transform= "rotateY(" + value + "deg)" ; oinner.style.msTransform= "rotateY(" + value + "deg)" ; oinner.style.webkitTransform= "rotateY(" + value + "deg)" ; oinner.style.MozTransform= "rotateY(" + value + "deg)" ; oinner.style.OTransform= "rotateY(" + value + "deg)" ; opersp.innerHTML=value + "deg" ; } window.onload= function (){ var range=document.getElementById( "range" ); range.onmousemove= function (){ changeRot(this.value); } } </script> </head> <body> <div id= "box" > <div id= "inner" >蚂蚁部落</div> </div> <table> <tr> <td class = "left" >旋转:</td> <td><input type= "range" min= "-360" max= "360" id= "range" value= "0" /></td> </tr> <tr> <td class = "left" >rotateY:</td> <td>(<span id= "persp" >0deg</span>)</td> </tr> </table> </body> </html>
|
Copy after login
以上代码演示了rotateY()的作用,他可以控制元素围绕着y轴进行旋转,就像是一个钢管舞演员在竖直的钢管上旋转。
三.rotateZ()方法:
1 | <!DOCTYPE html> <html> <head> <meta charset= " utf-8" > <meta name= "author" content= "http://www.softwhy.com/" /> <title>蚂蚁部落</title> <style type= "text/css" > #box{ position:relative; height:200px; width:200px; margin-top:150px; margin-left:150px; border:1px solid black; } #inner{ padding:50px; position:absolute; border:1px solid black; background-color:yellow; font-size:12px; transform-origin:0px 0px; -ms-transform-origin:0px 0px; -webkit-transform-origin:0px 0px; -o-transform-origin:0px 0px; -moztransform-origin:0px 0px; transform:rotateZ(0deg); -ms-transform:rotateZ(0deg); -webkit-transform:rotateZ(0deg); -o-transform:rotateZ(0deg); -moz-transform:rotateZ(0deg);} table{ font-size:12px; width:300px; margin-left:120px; } .left{text-align:right} </style> <script type= "text/javascript" > function changeRot(value){ var oinner=document.getElementById( 'inner' ); var opersp=document.getElementById( 'persp' ); oinner.style.transform= "rotateZ(" + value + "deg)" ; oinner.style.msTransform= "rotateZ(" + value + "deg)" ; oinner.style.webkitTransform= "rotateZ(" + value + "deg)" ; oinner.style.MozTransform= "rotateZ(" + value + "deg)" ; oinner.style.OTransform= "rotateZ(" + value + "deg)" ; opersp.innerHTML=value + "deg" ; } window.onload= function (){ var range=document.getElementById( "range" ); range.onmousemove= function (){ changeRot(this.value); } } </script> </head> <body> <div id= "box" > <div id= "inner" >蚂蚁部落</div> </div> <table> <tr> <td class = "left" >旋转:</td> <td><input type= "range" min= "-360" max= "360" id= "range" value= "0" /></td> </tr> <tr> <td class = "left" >rotateZ:</td> <td>(<span id= "persp" >0deg</span>)</td> </tr> </table> </body> </html>
|
Copy after login
以上代码演示了rotateZ()的作用,他可以控制元素围绕着z轴进行旋转,关于Z轴,学过立体几何的应该都比较清楚了,随便百度一下就知道了。上面三个代码已经比较清晰的演示了三个旋转函数的作用。
上面介绍的只是3D转换的一个类型的方法,更多类型的方法可以参阅以下列表:
1.translate3d(x,y,z)可以参阅CSS3的3D转换translate3d(x,y,z)函数一章节。
2.scale3d(x,y,z)可以参阅CSS3的3D转换scale3d(x,y,z)函数一章节。
3.rotate3d(x,y,z,angle)可以参阅CSS3的3D转换rotate3d(x,y,z,angle)函数一章节。
4.perspective(n)可以参阅CSS3的3D转换perspective(n)函数一章节。
3D转换还会涉及到以下几个属性,本章节不做介绍了,可以参阅相关章节。
1.transform-origin属性可以参阅CSS3的transform-origin属性用法详解一章节。
2.transform-style属性可以参阅CSS3的transform-style属性详细介绍一章节。
3.perspective属性可以参阅CSS3的perspective属性详解一章节。
4.perspective-origin属性可以参阅CSS3的perspective-origin属性详解一章节。
5.backface-visibility属性可以参阅CSS3的backface-visibility属性详解一章节。
原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=13265
更多css3知识可以参阅:http://www.softwhy.com/css3/