CSS 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%;

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

例子:

初始態:

.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;}

取基點為左下角,逆時針轉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%;}

取右下角為基點旋轉:

.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%;}

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

.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%;}

 


免責聲明!

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



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