transform 變形

1. 變形功能的誕生

在以前的變形上殿怜,僅僅是視覺(jué)效果上的變形,在底層的坐標(biāo)方格上沒(méi)有發(fā)生改變曙砂。自從CSS3誕生后头谜,元素的特效就從二維走向了三維。之前我們通過(guò)浮動(dòng)鸠澈、margin 這些操作柱告,都是讓元素平移。

在CSS3中笑陈,就誕生了這么一個(gè)屬性:transform 际度。這個(gè)變形功能,不僅可以平移元素涵妥,還能旋轉(zhuǎn)甲脏、元素翻轉(zhuǎn)或者其他更加強(qiáng)大的自定義特效。

2. 變形 transform

變形只有一個(gè)屬性:transform ,不過(guò)有很多輔助的屬性值用于控制如何變形块请。對(duì)于變形元素娜氏,要注意點(diǎn),變形的元素有自己的堆疊上下文:經(jīng)過(guò)縮放墩新、平移變形后的元素贸弥,在視覺(jué)上雖然比以前大或者比以前小了,但是元素在頁(yè)面上所占用的空間仍然與變形前的大小一致海渊。

transform: <transform-list> | none;

2.1 二維變形

二維變形绵疲,就是通過(guò)平移、旋轉(zhuǎn)臣疑、放大縮小和扭曲產(chǎn)生的形變盔憨,這個(gè)形變只在 x 和 y 軸上發(fā)生改變。

描述
rotate() 旋轉(zhuǎn)
translate() 平移
scale() 放大縮小
skew() 扭曲/斜切
2.1.1 旋轉(zhuǎn)
transform: rotate(30deg);

這段代碼表示讓元素以順時(shí)針?lè)较?/strong>旋轉(zhuǎn)30度讯沈,正數(shù)為順時(shí)針郁岩,負(fù)數(shù)為逆時(shí)針。deg 表示的是旋轉(zhuǎn)的角度缺狠。默認(rèn)情況下问慎,是以元素的中心點(diǎn)來(lái)旋轉(zhuǎn)的。

如果旋轉(zhuǎn)的角度設(shè)置大于360度挤茄,那旋轉(zhuǎn)函數(shù)就會(huì)對(duì)角度值進(jìn)行取余如叼。例如,旋轉(zhuǎn)1080deg穷劈,那 1080%360 等于 0 度笼恰,旋轉(zhuǎn)900度,則是 900%360 等于 180度歇终。

剛剛提到挖腰,元素默認(rèn)的旋轉(zhuǎn)中心是元素的中心位置,這個(gè)位置可以通過(guò) transform-origin 來(lái)改變

transform-origin: left top;

它的屬性值练湿,可以使用 left猴仑、center、right肥哎;top辽俗、center、bottom來(lái)表示篡诽,也可以使用百分比或者具體的長(zhǎng)度單位來(lái)表示崖飘。第一個(gè)值表示水平方向,第二個(gè)值表示垂直方向杈女。

2.1.2 平移
transform: translate(50px,100px);

平移的單位為px朱浴,用于設(shè)置水平方向和垂直方向的位移吊圾。它可以傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)就是表示水平方向翰蠢,第二個(gè)參數(shù)就是垂直方向项乒。當(dāng)傳遞一個(gè)參數(shù)時(shí),它代表水平方向梁沧,垂直位移會(huì)設(shè)為0檀何。

transform: translateX(50px);
transform: translateY(100px);

其中,translate的值可以設(shè)置為負(fù)值廷支。水平方向的正方向?yàn)橛移导怪狈较虻恼较驗(yàn)橄隆X?fù)值就代表反方向平移

2.1.3 縮放
transform: scale(2);

scale 表示縮放恋拍,不需要單位垛孔,可以為小數(shù)。1 表示百分百的原始大小施敢,在0~1之間表示縮小周荐,大于1表示放大。它同樣存在兩個(gè)值悯姊,第一個(gè)表示水平方向,第二個(gè)表示垂直方向贩毕。

當(dāng) scale 值為負(fù)數(shù)時(shí)悯许,左右、上下將會(huì)顛倒辉阶。

2.1.4 扭曲
transform: skew(15deg);

該屬性代表扭曲或者斜切先壕,單位和旋轉(zhuǎn)一樣,使用 deg 作為扭曲的角度谆甜,可以為負(fù)值垃僚。由于使用 skew 會(huì)導(dǎo)致圖像和內(nèi)容失真變形,因此在實(shí)際開(kāi)發(fā)時(shí)很少使用规辱。

2.2 三維變形

三維變形和二維變形一樣谆棺,還是使用 transform 屬性。那么怎樣讓瀏覽器知道罕袋,這段代碼是以3D的形式去進(jìn)行解讀呢改淑?通常有兩種方法

  • 第一種:直接提前告知瀏覽器變形方式

    -webkit-transform-style: preserve-3d;
    

    這段代碼需要添加給三維變形元素的腹肌,提前告知瀏覽器:我的子元素要3D變身了浴讯,然后瀏覽器會(huì)按照三維變形的方式渲染父級(jí)以及父級(jí)內(nèi)部的元素朵夏。

  • 第二種:直接使用CSS3三維變形語(yǔ)法

    transform: translate3D(100px,200px,300px);transform: translateX(100px) translateY(200px) translateZ(300px);
    

    在三維變形的屬性中,都可以按照這種三維書(shū)寫(xiě)方式來(lái)寫(xiě)榆纽。除了 skew仰猖,因?yàn)樗娜S和二維沒(méi)有任何變化捏肢。

思考問(wèn)題

1. 變形的順序會(huì)不會(huì)影響最終的效果?

當(dāng)一個(gè)變形中饥侵,并不僅僅存在一個(gè)變形時(shí)(即需要旋轉(zhuǎn)鸵赫,也需要平移),不同變形的書(shū)寫(xiě)順序可能會(huì)影響最終的效果爆捞。

transform: translate(100px) rotateZ(30deg);transform: rotateZ(30deg) translate(100px);

第一段代碼表示的是奉瘤,先平移,后旋轉(zhuǎn)煮甥;第二段則是先旋轉(zhuǎn)后平移盗温。可以發(fā)現(xiàn)成肘,在第二段明顯發(fā)生了垂直方向上的位移卖局,這時(shí)因?yàn)槿绻叵刃D(zhuǎn),元素的X與Y軸的位置發(fā)生改變双霍,接著平移的位置再按照新的x軸方向進(jìn)行位移砚偶,這就導(dǎo)致了在頁(yè)面垂直方向上發(fā)生了位移的改變。所以說(shuō)洒闸,在寫(xiě)變形效果時(shí)染坯,需要先考慮好變形的順序,再進(jìn)行代碼的書(shū)寫(xiě)丘逸。

2. 對(duì)于 rotate(0deg) 能否簡(jiǎn)寫(xiě)成 rotate(0)

原則上是可以簡(jiǎn)寫(xiě)单鹿,但是在火狐的部分版本中,無(wú)法正常讀取無(wú)單位的角度值深纲。因此考慮兼容性仲锄,盡量不要省略。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末湃鹊,一起剝皮案震驚了整個(gè)濱河市儒喊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌币呵,老刑警劉巖怀愧,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異余赢,居然都是意外死亡掸驱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)没佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毕贼,“玉大人,你說(shuō)我怎么就攤上這事蛤奢」硌ⅲ” “怎么了陶贼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)待秃。 經(jīng)常有香客問(wèn)我拜秧,道長(zhǎng),這世上最難降的妖魔是什么章郁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任枉氮,我火速辦了婚禮,結(jié)果婚禮上暖庄,老公的妹妹穿的比我還像新娘聊替。我一直安慰自己,他們只是感情好培廓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布惹悄。 她就那樣靜靜地躺著,像睡著了一般肩钠。 火紅的嫁衣襯著肌膚如雪泣港。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天价匠,我揣著相機(jī)與錄音当纱,去河邊找鬼。 笑死踩窖,一個(gè)胖子當(dāng)著我的面吹牛坡氯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毙石,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼廉沮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颓遏!你這毒婦竟也來(lái)了徐矩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤叁幢,失蹤者是張志新(化名)和其女友劉穎滤灯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曼玩,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳞骤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了黍判。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫尽。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖顷帖,靈堂內(nèi)的尸體忽然破棺而出美旧,到底是詐尸還是另有隱情渤滞,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布榴嗅,位于F島的核電站妄呕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嗽测。R本人自食惡果不足惜绪励,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唠粥。 院中可真熱鬧疏魏,春花似錦、人聲如沸厅贪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)养涮。三九已至葵硕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贯吓,已是汗流浹背懈凹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悄谐,地道東北人介评。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像爬舰,于是被迫代替她去往敵國(guó)和親们陆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容