CSS3 transform轉...登入

CSS3 transform轉換

一.基本知識:
2D轉換能夠改變指定元素的位置、尺寸和形狀屬性。
實作2D轉換需要使用transform屬性,屬性值是一些轉換函數,以下分別來做介紹。
二.轉換函數:
1.translate()函數:
此函數可以根據參數實現指定元素的移動效果。
有兩個參數,第一個參數規定水平方向的位移距離,第二個參數規定垂直方向的位移距離。
程式碼實例:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http:/
/" />
<title>php中文网</title>
<style type="text/css">
#box{
  width:400px;
  height:400px;
  background:green;
}
#box .demo{
  width:50px;
  height:50px;
  background:red;
  transform:translate(50px,50px);
  -ms-transform:translate(50px,50px);/*IE9 */
  -webkit-transform:translate(50px,50px);/*Safari and Chrome*/
  -o-transform:translate(50px,50px);/* Opera*/
  -moz-transform:translate(50px,50px);/* Firefox */
}
</style>
</head>
<body>
<div id="box">
  <div class="demo"></div>
</div>
</body>
</html>

以上程式碼可以設定div在水平方向和垂直方向的位移都是50px。
特別說明:如果只有一個參數,那麼這個參數同時應用於水平和垂直方位;如果參數是百分比值,參考尺寸是元素本身對應的長度和寬度尺寸;對於下面的函數同樣適用。
2.rotate()函數:
此函數可以規定元素的順時針旋轉角度,如果為負值,則是逆時針旋轉。
程式碼實例:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://ask.php.cn/" />
<title>php中文网</title>
<style type="text/css">
#box{
  width:400px;
  height:400px;
  background:green;
}
#box .demo{
  width:50px;
  height:50px;
  background:red;
  transform:rotate(60deg);
  -ms-transform:rotate(60deg);/* IE 9 */
  -webkit-transform:rotate(60deg);/* Safari and Chrome */
  -o-transform:rotate(60deg);/* Opera */
  -moz-transform:rotate(60deg);
}
</style>
</head>
<body>
<div id="box">
  <div class="demo"></div>
</div>
</body>
</html>

以上程式碼可以將div元素順時針旋轉60度。
3.scale()函數:
此函數可以實作指定元素的縮放效果。
有兩個參數,第一個參數是寬度縮放倍數,第二個是高度縮放倍數。
程式碼實例:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://ask.php.cn/" />
<title>php中文网</title>
<style type="text/css">
#box{
  width:400px;
  height:400px;
  background:green;
  margin:100px;
}
#box .demo{
  width:50px;
  height:50px;
  background:red;
  transform:scale(2,3);
  -ms-transform:scale(2,3);/* IE 9 */
  -webkit-transform:scale(2,3);/* Safari 和 Chrome */
  -o-transform:scale(2,3);/* Opera */
  -moz-transform:scale(2,3);/* Firefox */
}
</style>
</head>
<body>
<div id="box">
  <div class="demo"></div>
</div>
</body>
</html>

以上程式碼可以將div寬度放大兩倍,高度放大三倍。
4.skew()函數:
此函數可以設定指定元素的扭曲角度。
有兩個參數,第一個參數設定水平方向上的扭曲變形,第二個參數設定垂直方向的扭曲變形。
第二個參數如果省略,那麼預設值就是0。
程式碼實例一:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://ask.php.cn/" />
<title>php中文网</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;
  transform-origin:40 40;
  font-size:12px;
   
  transform:skew(45deg);
  -ms-transform:skew(45deg);/*IE9*/
  -webkit-transform:skew(45deg);/*Safari and Chrome*/
  -o-transform:skew(45deg);/*Opera*/
  -moz-transform:skew(45deg);/*Firefox*/
}
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="skew(" + value + "deg)";
  oinner.style.msTransform="skew(" + value + "deg)";
  oinner.style.webkitTransform="skew(" + value + "deg)";
  oinner.style.MozTransform="skew(" + value + "deg)";
  oinner.style.OTransform="skew(" + 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">php中文网</div>
</div>
<table>
  <tr>
    <td class="left">扭曲:</td>
    <td><input type="range" min="-360" max="360" id="range" value="45"/></td>
  </tr>
  <tr>
    <td class="left">skew:</td>
    <td>(<span id="persp">45deg</span>)</td>
  </tr>
</table>
</body>
</html>

以上程式碼可以測試水平方向的扭曲,拖曳捲軸測試,則可以一目了然了。
實例程式碼二:

<!DOCTYPE html>
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://ask.php.cn/" /> 
<title>php中文网</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; 
  transform-origin:40 40; 
  font-size:12px; 
   
  transform:skew(0,45deg);
  -ms-transform:skew(0,45deg);/*IE9*/
  -webkit-transform:skew(0,45deg);/*Safari and Chrome*/
  -o-transform:skew(0,45deg);/*Opera*/
  -moz-transform:skew(0,45deg);/*Firefox*/
} 
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="skew(0," + value + "deg)"; 
  oinner.style.msTransform="skew(0," + value + "deg)"; 
  oinner.style.webkitTransform="skew(0," + value + "deg)"; 
  oinner.style.MozTransform="skew(0," + value + "deg)"; 
  oinner.style.OTransform="skew(0," + 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">php中文网</div> 
</div> 
<table> 
  <tr> 
    <td class="left">扭曲:</td> 
    <td><input type="range" min="-360" max="360" id="range" value="45"/></td> 
  </tr> 
  <tr> 
    <td class="left">skew:</td> 
    <td>(<span id="persp">45deg</span>)</td> 
  </tr> 
</table> 
</body> 
</html>

以上程式碼可以測試垂直方向的扭曲,拖曳滾動條測試,則可以一目了然了。
5.matrix()函數:
以一個包含六值的(a,b,c,d,e,f)變換矩陣的形式指定一個2D變換,相當於直接應用一個[a b c d e f]變換矩陣。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php中文网</title> 
<style> 
div
{
width:100px;
height:75px;
background-color:red;
border:1px solid black;
}
div#div2
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
-ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
}
</style>
</head>
<body>
<div>Hello. This is a DIV element.</div>
<div id="div2">Hello. This is a DIV element.</div>
</body>
</html>

利用matrix()方法旋轉div元素30°

下一節
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://ask.php.cn/" /> <title>php中文网</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; transform-origin:40|40; font-size:12px; transform:skew(45deg); -ms-transform:skew(45deg);/*IE9*/ -webkit-transform:skew(45deg);/*Safari and Chrome*/ -o-transform:skew(45deg);/*Opera*/ -moz-transform:skew(45deg);/*Firefox*/ } 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="skew(" + value + "deg)"; oinner.style.msTransform="skew(" + value + "deg)"; oinner.style.webkitTransform="skew(" + value + "deg)"; oinner.style.MozTransform="skew(" + value + "deg)"; oinner.style.OTransform="skew(" + 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">php中文网</div> </div> <table> <tr> <td class="left">扭曲:</td> <td><input type="range" min="-360" max="360" id="range" value="45"/></td> </tr> <tr> <td class="left">skew:</td> <td>(<span id="persp">45deg</span>)</td> </tr> </table> </body> </html>
章節課件