css3中變形與動畫(一)

2021-09-08 11:12:24 字數 3755 閱讀 7927

css3製作動畫的幾個屬性:變形(transform),過渡(transition)和動畫(animation)。

首先介紹transform變形。

transform英文意思:改變,變形。

css3中transform主要包括以下幾種:旋轉(rotate),扭曲(skew),縮放(scale)、移動(translate)和矩陣變形matrix。

語法:

transform : none | [ ]* 

transform: rotate | scale | skew | translate |matrix;

none就是預設值,不進行變形。

:表示乙個或多個變換函式,以空格分開。即可同時對乙個元素進行transform的多種屬性操作,例如同時用rotate,scale和translate三種。

rotate()

skewx()

skewy()

scale()

translate()

matrix()

rotate() :通過指定的角度引數對元素指定乙個2d rotation(2d旋轉),需先有transform-origin屬性的定義。

transform-origin定義的是旋轉的基點,其中angle是指選擇角度,正順時針旋轉,負逆時針旋轉。

rotate是乙個很有用的動畫,可配合animation做出非常有意思的效果,看綜合例項效果。

translate()函式可以把元素從原來的位置移動,而不影響在x,y軸上的任何web元件,類似於position:relative。

根據給定的left(x座標),top(y座標)位置引數,元素從其當前位置移動。

translate()分三種情況:

note:translate移動的基點預設為元素中心點,可以根據transform-origin改變基點。

如果第二個值沒設定,預設為0。

相當於translate(x,0,)的簡寫,基點為元素中心點。

相當於translate(0,y)的簡寫,基點為元素在中心。

scale縮放和translate移動非常相似,也有三種情況。

縮放中心點:即元素的中心位置

基數:縮放就是既可以縮小,也可以放大;縮放基數為1,大於1放大,小於1縮小。

note:第二個引數未提供則取與第乙個一樣的值。

scale可以取負值,負值會讓元素翻轉並縮放。

這個屬性是用來製作傾斜度的,設計時在2d裡面建立3d透檢視的時候必須的屬性。

skew和translate、scale一樣有三種情況。

即x軸和y軸同時按照一定的角度值進行扭曲變形。

如果第二個引數未提供,則值為0,也就是y軸無斜切。

matrix(, , , , , ):以乙個含六值的(a,b,c,d,e,f)變換矩陣的形式指定乙個2d變換,相當於直接應用乙個[a,b,c,d,e,f]變換矩陣。就是基於水平方向和垂直方向重新定位元素。

svg,css3,html5的canvas中都有矩陣變換,接下來簡單說說。

乙個元素渲染後就可以得到一張位圖,然後對這個點陣圖上每一點進行變換,就可以得到新的一張位圖,從而產生平移,縮放,旋轉,切變及映象反射等效果。

2d矩陣變換都提供6個引數a,b,c,d,e,f,基本公式為:

其中,x和y是元素最開始的座標,x'和y'是矩陣變換後得到的新座標。

note:變換矩陣中a,b,c,d,e,f6個引數是豎著排的。

x'=ax+cy+e

y'=bx+dy+f

x'=ax+ cy+e,我們設a=1,c=0,則x'=x+e,

y'=bx+dy+f,同樣設b=0,d=1,則y'=y+f。

這就是translate(e,f)了。

所以說translate(e,f)就是簡化了的變換矩陣matrix(1,0,0,1,e,f),

(x,y)平移(tx,ty),就意味著做了乙個【1 0 0 1 tx,ty】的矩陣變換。

x'=ax+cy+e,我們設c=0,e=0,則x'=ax,

y'=bx+dy+f,我們設b=0,f=0,則y'=dy。

這就是scale(a,d)了。

所以說scale(a,d)就是簡化了的變換矩陣matrix(a,0,0,d,0,0)。

(x,y)縮放(sx,sy),就意味著做了乙個【sx 0 0 sy 0 0】的矩陣變換。

rotate(a deg)等價於【cons(a) sin(a) -sin(a) cons(a) 0 0】矩陣變換。

skewx(a deg)等價於【1 0 tan(a) 1 0 0】的矩陣變換。

skewy(a deg)等價於【1 tan(a) 0 1 0 0】的矩陣變換。

所以說matrix就是將所有的2d效果全部組合在了一起使用。

前面說了,元素預設的基點是其中心位置,可用transform-origin改變其基點。

使用:transform-origin(x,y):用來設定元素的基點(參考點)。預設點是元素的中心點。x,y的值可以是百分比,em,px,其中x也可以是left,center,right,y可以是top,center,bottom,這點和background-position一樣。

前端開發中需要用到的變換矩陣

css3:transform與transition背後的數學原理[winter]

css3 2d transform

w3c css3-2d-transforms

w3c rotationdefined

w3 文件,關於座標系以及矩陣變換屬性

w3 文件,svg中的3d變換矩陣

w3 文件,css 3中的3d變換矩陣

transform-style和perspective屬性

純css旋轉,各種動畫,可作為載入時動畫【updated 2015,8,4】

CSS3中的變形與動畫(一)

css3變形篇 旋轉rotate 旋轉rotate 函式通過指定的角度引數使元素相對原點進行旋轉。它主要在二維空間內進行操作,設定乙個角度值,用來指定旋轉的幅度。如果這個值為正值,元素相對原點中心順時針旋轉 如果這個值為負值,元素相對原點中心逆時針旋轉。例子 扭曲skew 扭曲skew 函式能夠讓元...

CSS3中的變形與動畫

css3常見的動畫效果的實現,其實主要是靠transition和animation。而通常,這兩個又會和css3中的新屬性transform來搭配使用 那麼這三個東西其實是幹什麼用的呢?我按我自己的理解來下個簡單結論。transform 把元素變形 transition 元素的屬性變化時,給他乙個過...

Css3中的變形與動畫

下面的 列出了所有的轉換屬性 屬性描述 csstransform 向元素應用 2d 或 3d 轉換。3transform origin 允許你改變被轉換元素的位置。32d transform 方法 matrix n,n,n,n,n,n 定義 2d 轉換,使用六個值的矩陣。translate x,y ...