日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3D变形:平移、旋转、缩放

發(fā)布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3D变形:平移、旋转、缩放 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是3d轉換

定義元素在三維空間移動、縮放、旋轉

3d坐標軸(圖示)

3D立體空間的3根軸線

  • x軸:水平,向右為正,向左為負

  • y軸:垂直,向下為正,向上為負

  • z軸:垂直于屏幕,向外為正,向內(nèi)為負

1)3D必備屬性

  • transform-style: preserve-3d; 創(chuàng)建3d空間

  • 什么時候搭建3d舞臺?

    • 父元素有3D變形,子元素也有3D變形

  • perspective屬性:景深(透視),屬性值為透視點到元素的距離,近大遠小;也可以讓網(wǎng)頁產(chǎn)生3D效果,單位像素

  • 一般取值:800px-1000px perspective:800px 就是人離屏幕800px 的地方觀看這個div元素。 當translateZ的大小臨近與800px時圖片離我們越來越近了 當它大于800px時,這個圖片就消失了 ? 反之當translateZ為負值時,我們可以看到圖片變小了,也就是圖片離人越來越遠了。
  • preserve-3d, 如果搭配overflow: hidden/scroll/auto使用,相當于2D效果

transform-style屬性和perspective屬性放在父元素中,有時候perspective屬性放在body中

2) 位移

  • transform: translateZ(z); 沿著z軸方向位移

  • transform: translate3d(x,y,z) 沿著x、y、z軸方向位移

    z指的是 z 軸的向量位移長度。當其值為負值時,元素在 Z 軸越移越遠,導致元素變小。反之當值為正值時,

    其在 Z 軸越移越近,導致元素變得較大。

<!DOCTYPE html> <html lang="en"> ? <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father {width: 400px;height: 400px;border: 2px solid tomato;margin: 100px auto;/* 景深效果,創(chuàng)建網(wǎng)頁3d效果 */perspective: 1000px;} ?.father .son {width: 200px;height: 200px;background-color: tomato;margin: 100px auto; ?} ?.father:hover .son {transform: translateZ(200px);transform: translateZ(-200px);transform: translateX(100px) translateY(50px) translateZ(200px);transform: translate3d(100px, 50px, 200px); ?}</style> </head> ? <body><div class="father"><div class="son"></div></div> </body> ? </html>

3) 旋轉

  • transform: rotateX(a); 沿著x軸方向旋轉

  • a 指的是一個旋轉角度值,如果為正值,元素圍繞X軸順時針旋轉;反之,如果為負值,元素圍繞X軸逆時針旋轉。

  • transform: rotateY(a); 沿著y軸方向旋轉

  • a 指的是一個旋轉角度值,如果為正值,元素圍繞Y軸順時針旋轉;反之,如果為負值,元素圍繞Y軸逆時針旋轉。

  • transform: rotateZ(a); 沿著Z軸方向旋轉

  • a 指的是一個旋轉角度值,如果為正值,元素圍繞 Z 軸順時針旋轉;反之,如果為負值,元素圍繞 Z 軸逆時針

    旋轉。

  • transform: rotate3d(x,y,z,angle);

  • 參數(shù):

    x:是一個 0 到1之間的數(shù)值,主要用來描述元素圍繞 X 軸旋轉的矢量值。

    y:是一個 0 到1之間的數(shù)值,主要用來描述元素圍繞 Y 軸旋轉的矢量值。

    z:是一個 0 到1之間的數(shù)值,主要用來描述元素圍繞 Z 軸旋轉的矢量值。

    angle:一個角度值,指定在 3D 空間旋轉角度,正值順時針旋轉,反之元素逆時。

1、兩個值為零,定義X,Y,Z軸旋轉 rotate3d(1,0,0,angle) ? x軸旋轉 rotate3d(0,1,0,angle) ? y軸旋轉 rotate3d(0,0,1,angle) ? z軸旋 ? /* 沿著x軸方向旋轉 */ transform: rotateX(-45deg); transform: rotate3d(1,0,0,-45deg); ? /* 沿著y軸方向旋轉 */ transform: rotateY(-45deg); transform: rotate3d(0,1,0,-45deg); ? /* 沿著z軸方向旋轉 */ transform: rotateZ(-45deg); transform: rotate3d(0,0,1,-45deg); ? ? 2、兩個值不為零,定義多軸旋轉 rotate3d(1,0.5,0,30deg) ? x 1*30 ? 30deg ? y 0.5*30 ?15deg ? z 0*0 ? ? 0deg ? .box5:hover img {/* z */transform: rotate3d(.5, 1, 0, 60deg);/* x:0.5*60=30degy:1*60=60degz:0*60=0deg ?*/ } 3、三個值不為零,定義多軸旋轉 ? .box6:hover img {/* z */transform: rotate3d(.5, 1, 1, 60deg);/* x:0.5*60=30degy:1*60=60degz:1*60=60deg ?*/ }

4)縮放

  • transform: scaleZ() 沿著z軸方向縮放 (厚度)

  • transform: scale3d() 沿著x、y、z軸方向縮放

  • 取值

    • 默認值為1

    • 使用0~1之間的值縮小元素 使用超過1的值放大元素

  • 注意:scaleZ單獨使用看不到效果,需要配合其他變換屬性一起使用

transform: scaleZ(3); transform: scale3d(2, 3, 3);

3D縮放Z軸演示

<!doctype html> <html> ? <head><meta charset="utf-8"><title>無標題文檔</title> ?<style>.wrap {width: 1000px;height: 600px;border: 1px solid red;perspective: 500px;perspective-origin: right top;} ?.box {position: absolute;left: 50%;margin-left: -100px;top: 50%;margin-top: -100px;width: 200px;height: 200px;transform-style: preserve-3d;/* transform: scale3d(1.5, 1, 1.5); */transform: scaleZ(1.5);} ?.box div {position: absolute;left: 0;top: 0;width: 200px;height: 200px;} ?.box div:nth-child(1) {background: red;transform: rotateX(90deg) translateZ(100px);} ?.box div:nth-child(2) {background: yellow;transform: rotateX(90deg) translateZ(-100px);} ?.box div:nth-child(3) {background: green;transform: rotateY(90deg) translateZ(100px);} ?.box div:nth-child(4) {background: blue;transform: rotateY(90deg) translateZ(-100px);} ?.box div:nth-child(5) {background: pink;transform: translateZ(100px);} ?.box div:nth-child(6) {background: orange;transform: translateZ(-100px);}</style> ? </head> ? <body><div class="wrap"><div class="box"><div class="bg1"></div><div class="bg2"></div><div class="bg3"></div><div class="bg4"></div><div class="bg5"></div><div class="bg6"></div></div></div> </body> ? </html>

總結

以上是生活随笔為你收集整理的3D变形:平移、旋转、缩放的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。