2D與3D

前言

說到2d與3d的轉(zhuǎn)換,到底什么是2d,什么又是3d,看下圖:

坐標(biāo)

所謂的2d和3d就是我們理解的二維空間和三維空間,那么什么是二維空間,什么又是三維空間呢?

二維空間:二維空間就是一個(gè)平面,我們?nèi)粘I钪兴赖亩S坐標(biāo)系,就是用來解讀二維空間的,看圖中有x,y,z三個(gè)軸,我們只需要看X軸和Y軸,而X軸和Y軸所構(gòu)成的就叫做二維坐標(biāo)系,而2d轉(zhuǎn)換就是基于二位坐標(biāo)系變換的

三維空間:三維空間是基于二維空間上又加了一條Z軸,我們所處的空間就是三維的空間,我們學(xué)到的3d轉(zhuǎn)換,就是基于三維坐標(biāo)系的

當(dāng)我們弄懂了什么是2d什么又是3d的時(shí)候,我們想到什么是,基于2d和3d又是怎樣的變法;

一、2D形變:transform

2d形變共有4個(gè)屬性:

    translate(位移)

    rotate(旋轉(zhuǎn))

    scale(縮放)

    skew(傾斜)

1.1 translate

在2D形變中,位移translate有兩個(gè)參數(shù),就是沿著x,y軸位移的距離。

.box{
        transform:translate(100px,100px);
}
.box{
        transform:translateX(100px);
}
.box{
        transform:translateY(100px);
}
.box{
        transform:translate(100px);
}

以上設(shè)置的四個(gè)樣式,它們的表現(xiàn)形式分別是,第一個(gè)元素向右向下各移動(dòng)100px,第二個(gè)元素向右移動(dòng)100px,第三個(gè)元素向下移動(dòng)了100px,第四個(gè)元素向右移動(dòng)了100px,translate不指定方向的時(shí)候設(shè)置一個(gè)值只會(huì)對x軸生效;

1.2 rotate

在2D形變中,rotate有一個(gè)參數(shù),就是旋轉(zhuǎn)的角度,注意這里的旋轉(zhuǎn)是順時(shí)針的。

.box{
        transform:rotate(45deg);
}
.box{
        transform:rotate(-45deg);
}

上面的代碼設(shè)置以后,第一個(gè)元素會(huì)順時(shí)針旋轉(zhuǎn)45度,第二個(gè)逆時(shí)針旋轉(zhuǎn)45度;

1.3 scale

在2D形變中,scale有兩個(gè)參數(shù),就是沿著x,y軸縮放的比例,這個(gè)值小于1代表縮小。

.box{
        transform:scaleX(2);
}
.box{
        transform:scaleY(0.5);
}
.box{
        transform:scale(1.5);
}

上面的代碼表示,第一個(gè)元素沿著X軸的方向會(huì)放大兩倍,也就是寬度放大兩倍,第二個(gè)元素沿著Y軸放大0.5倍也就是高度縮小兩倍,第三個(gè)元素整體放大1.5倍;

1.4 skew

這個(gè)屬性是2d形變中的屬性,所以只有兩個(gè)參數(shù),分別表示沿著x軸和y軸的2d傾斜角度;這個(gè)屬性需要注意是,在傾斜的時(shí)候,元素里的文字也會(huì)跟著傾斜。

二、3D形變

3d.png

3d形變有三個(gè)屬性:

    translate

    scale

    rotate

是不是和2d形變差不多呢?是的,兩者差別不大,但是3d多了很多2d沒有的東西。

首先我們要知道幾個(gè)概念:

景深:perspective:屬性包括兩個(gè)屬性:none和具有單位的長度值。其中perspective屬性的默認(rèn)值為none,表示無限的角度來看3D物體,但看上去是平的。另一個(gè)值<length>
接受一個(gè)長度單位大于0的值。而且其單位不能為百分比值。<length>
值越大,角度出現(xiàn)的越遠(yuǎn),從而創(chuàng)建一個(gè)相當(dāng)?shù)偷膹?qiáng)度和非常小的3D空間變化。反之,此值越小,角度出現(xiàn)的越近,從而創(chuàng)建一個(gè)高強(qiáng)度的角度和一個(gè)大型3D變化。
比如你站在10英尺和1000英尺的地方看一個(gè)10英尺的立方體。在10英尺的地方,你距離立方體是一樣的尺寸。因此視角轉(zhuǎn)變遠(yuǎn)遠(yuǎn)大于站在1000英尺處的,立體尺寸是你距離立方體距離的百分之一。同樣的思維適用perspective的<length>值;
這上面說的一堆不知道是不是人話,我理解的景深就是你的眼睛距離屏幕的大??;

transform-style:preserve-3d;屬性是3D空間一個(gè)重要屬性,表示所有子元素在3D空間中呈現(xiàn)。

視覺中心點(diǎn):指的是我們的視野在一個(gè)平面中的中心點(diǎn),在3d轉(zhuǎn)換中,視覺中心點(diǎn)是可以控制的。

perspective-origin:center center;(默認(rèn)值)

可以設(shè)置x方向和y方向,單位可以是px百分比 top center bottom right left

旋轉(zhuǎn)中心點(diǎn):

transform-origin:center center 0;(默認(rèn)值)

前面我們寫過xy方向上的,今天多了一個(gè)z軸,第三個(gè)值就是z軸默認(rèn)值是0;

2.1 translate

3d中,位移多了一個(gè)方向,z軸的方向,translateZ(100px)表示元素向Z軸移動(dòng)100px;

2.2rotate

在2d中旋轉(zhuǎn)是只有繞著中心點(diǎn)旋轉(zhuǎn)的,在3d中多了x軸和y軸,其中,箭頭指向我們的順時(shí)針是正的,逆時(shí)針是負(fù)的;

2.3scale

縮放也是在2d的基礎(chǔ)上加了一個(gè)在z軸上縮放,這里主要聲明一下z軸的縮放:

在z軸上的縮放,我理解的是,把z軸方向的空間密度改變了,如果同樣是100px 在scaleZ(2)的基礎(chǔ)上,100px同樣是100px這個(gè)數(shù)據(jù)但是100px變大了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2d變形transform: none | transform-function1.rotate(角度)Rotat...
    奶瓶SAMA閱讀 248評論 0 0
  • CSS里transform變形這個(gè)屬性有點(diǎn)學(xué)習(xí)難度,尤其在CSS3里加上了3D效果之后,2維變3維學(xué)習(xí)成本更是成倍...
    張歆琳閱讀 28,418評論 5 81
  • 看了很多視頻、文章,最后卻通通忘記了,別人的知識(shí)依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印象,因...
    DCbryant閱讀 1,974評論 0 4
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,755評論 0 7
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,441評論 0 11

友情鏈接更多精彩內(nèi)容