css3 transform轉換


1.先說說css的坐標系:

x軸的正方向就是水平向右的方向
y軸的正方向就是垂直向下的方向
z軸的正方向就是屏幕到用戶的方向

2.位移

translate(x,y):2d位移
translateX(n) 設置x軸方向的位移
translateY(n) 設置y軸方向的位移

translate3d(x,y,z):3d位移
translateZ(n) 設置z軸方向的位移

參數可以是具體的像素值,也可以是百分比(基於自己的寬高)

語法:

transform:translate(200px,0);

3.縮放

scale(x,y) 2d縮放,如果只傳了一個值,則表示x,y都是這個值
scaleX(n) 設置x軸方向的縮放
scaleY(n) 設置y軸方向的縮放

注意:即使使用scale()將元素方法縮小了,在使用getComputedStyle()獲取元素大小時值永遠都是不變的。屬性事件對象中的event.offsetX/event.offsetY也永遠是scale=1時的大小,也就是說,坐標軸會跟着縮放

scale3d(x,y,z) 3d縮放

語法:

transform:scale(2);

3.旋轉

rotate() 2d旋轉,順時針方向

rotate3d(x,y,z) 3d旋轉
rotateX(angle) 圍繞x軸旋轉
rotateY(angle) 圍繞y軸旋轉
rotateZ(angle) 圍繞z軸旋轉

語法:

transform:rotate(45deg)

要實現3d視角,需要設置

/* 3d模式 */
transform-style: preserve-3d;
/* 視距 */
perspective: 1200px;

rotateX效果

transform:   rotateX(360deg);

rotateY效果

transform:   rotateY(360deg);

rotateZ效果

transform:   rotateZ(360deg);

4.transform-origin

這個屬性用來設置元素transform時的基點,默認為元素的中心,也就是center center
他的值有以下幾種:
具體數值 例如50px 50px
關鍵字 left right top bottom center
百分比 20% 20%(基於元素大小)

我們前面的旋轉的例子就是基於元素中心進行旋轉的

將轉換基點修改成左上角

transform-origin: 0 0;

5.scale與translate共用

如果scale()在前,則實際位移 = 設定的位移 * scale的倍數
建議translate寫在前面

transform: translate(300px,0) scale(2) ;
//以 容器的中心點來計算,容器位移了300px

transform: scale(2) translate(200px,0);
//以 容器的中心點來計算,容器位移了400px
transform: scale(3) translate(100px,0);
//以 容器的中心點來計算,容器位移了300px
transform: scale(0.5) translate(200px,0);
//以 容器的中心點來計算,容器位移了100px

6.translate()和rotate()共用

rotate()寫在translate前面的話會改變坐標系,從而改變translate的設定,所以是要是設置多值的話,建議把translate()寫在前面


免責聲明!

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



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