transform(變形)和transform-origin(變形原點)


轉載請說明出處,原文地址http://blog.sina.com.cn/s/blog_780a942701014xl8.html

 

 

transform(變形)和transform-origin(變形原點)

 
transform(變形)和transform-origin(變形原點)的說明:

      目前這兩個屬性得到了除去ie以外各個主流瀏覽器webkit,firefox,opera的支持,屬性名分別為

      -webkit-transform,-moz-transform,-o-transform;

1、改變元素基點transform-origin

  • transform-origin是變形原點,也就是該元素圍繞着那個點變形或旋轉,該屬性只有在設置了transform屬性的時候起作用;
  •  因為我們元素默認基點就是其中心位置換句話說我們沒有使用transform-origin改變元素基點位置的情況下,transform進行的rotate,translate,scale,skew,matrix等操作都是以元素自己中心位置進行變化的
  • 但有時候我們需要在不同的位置對元素進行這些操作,那么我們就可以使用transform-origin來對元素進行基點位置改變,使元素基點不在是中心位置,以達到你需要的基點位置。
  • 下面我們主要來看看其使用規則:

    transform-origin(X,Y):用來設置元素的運動的基點(參照點)。默認點是元素的中心點。其中X和Y的值可以是百分值,em,px,其中X也可以是字符參數值left,center,rightY和X一樣除了百分值外還可以設置字符值top,center,bottom 。

    • 語法:-moz-transform-origin: [ |  | left | center | right ][ |  | top | center | bottom ] ?
    • transform-origin接受兩個參數,它們可以是百分比,em,px等具體的值,也可以是left,center,right,或者 top,center,bottom等描述性參數 ;
    • top left | left top 等價於 0 0;
    • top | top center | center top 等價於 50% 0
    • right top | top right 等價於 100% 0
    • left | left center | center left 等價於 0 50%
    • center | center center 等價於 50% 50%(默認值)
    • right | right center | center right 等價於 100% 50%
    • bottom left | left bottom 等價於 0 100%
    • bottom | bottom center | center bottom 等價於 50% 100%
    • bottom right | right bottom 等價於 100% 100%

  

其中 left,center right是水平方向取值,對應的百分值為left=0%;center=50%;right=100%

top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100%;

如果只取一個值,表示垂直方向值不變

注:

transform-origin並不是transform中的屬性值,他具有自己的語法。

但是他要結合transform才能起作用。

 

例子:

 

初始態:

.heart{ position:relative; width:100px; height:80px; background:blue;}

.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0;}

transform(變形)和transform-origin(變形原點)

取基點為左下角,逆時針轉45deg

.heart{ position:relative; width:100px; height:80px; background:blue;}

.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}

transform(變形)和transform-origin(變形原點)

取右下角為基點旋轉:

.heart{ position:relative; width:100px; height:80px; background:blue;}

.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}


.heart:after{ position:absolute; content:""; left:0px;top:0;width:50px;height:80px; background:yellow;border-radius: 50px 50px 0 0; -webkit-transform: rotate(45deg); -webkit-transform-origin: 100% 100%;}

transform(變形)和transform-origin(變形原點)transform(變形)和transform-origin(變形原點)

最后合並代碼並將黃色改為紅色統一:

.heart:before,.heart:after{ position:absolute; content:""; top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0;}

.heart:before{ left:50px; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}
.heart:after { left: 0; -webkit-transform: rotate(45deg); -webkit-transform-origin: 100% 100%;}
transform(變形)和transform-origin(變形原點)

 

2、transform

  • transform屬性可用於內聯(inline)元素和塊級(block)元素。它允許我們旋轉、縮放和移動元素,他有幾個屬性值參數:
  • rotate(旋轉)允許你通過傳遞一個度數值來轉動一個對象;
  • scale是一個縮放功能,可以讓任一元素變的更大。它使用一個或者兩個正數和負數以及小數作為參數;當使用一個參數時表示X軸和Y軸的縮放相同;
  • translate就是基於X和Y 坐標重新定位元素,當使用一個參數時表示X軸和Y軸的參數相同;
  • skew傾斜(ps中的斜切),參數是度數,當使用一個參數時表示X軸和Y軸的參數相同;
  • matrix矩陣變換,就是基於X和Y 坐標重新定位元素,它使用6個參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM