CSS動畫相關知識詳解

2021-10-24 10:49:24 字數 3999 閱讀 6073

css3包括兩種轉換,2d轉換和3d轉換。

css3的轉換允許我們對元素進行旋轉、縮放、移動或傾斜。

不管2d轉換還是3d轉換都是操作的同乙個的屬性:transform

有四種轉換:rotate、scale、translate、skew

1.1.1 translate

在x和y方向平移元素:

transform: translate(500px, 0px);

說明:引數可以是畫素或百分比。

引數1:沿x方向的平移,正表示向右移動

引數2:沿y方向的平移,正表示向下移動

如果是百分比是相對於自己的寬高的百分比。

如果僅僅沿x或y某乙個方向運動,也可以使用:

transform:translatex(200px); 或 transform:translatey(200px);

1.1.2 rotate

旋轉元素, 是指有沿著 z 軸旋轉。(就是垂直於螢幕的軸)

transform:rotate(10deg);

引數必須是度數。大於0表示順時針旋轉的度數,小於0表示逆時針旋轉的角度。

說明:旋轉的時候預設是以元素的幾何中心作為軸來旋轉的。

可以使用 transform-origin: offsetx offsety;來設定旋轉的時候的軸的位置.

1.1.3 scale

對元素進行放大。

transform: scale(倍數);

1.1.4 skew

skew是傾斜(斜切)。讓元素與x方向或y方向產生傾斜。

transform: skew(40deg,10deg);

引數1:x方向的傾斜度數

引數2:y方向的傾斜度數

想對2d轉換來說,3d轉換瀏覽器支援的不太好。不過在移動端可以放心的使用。

3d座標系:

預設情況水平向右為x軸正方形、垂直向下為y軸正方形、垂直於螢幕向外的為z軸正方形

1.2.1 perspective屬性

perspective(透視)是transform變形3d中最重要的內容。如果不設定透視,元素的3d變形效果將無法實現,所有的變化都會被投影到2d的區域展示。

​ 可以簡單理解為 視距,用來設定使用者和元素 3d 空間 z 平面之間的距離。而其效應由他的值來決定,值越小,使用者與 3d 空間 z 平面距離越近,視覺效果更令人印象深刻;反之,值越大,使用者與3d空間z平面距離越遠,視覺效果就越小。

​ 要把它用在父容器中。

1.2.2 translate3d(x,y,z)

translate3d(x,y,z) 可以在x,y,z三個方向移動。

translatez(z) 只在z軸平移

1.2.3 rotate3d(x, y, z, a)

3d旋轉。 分別表示繞著x,y,z旋轉。 引數中的x,y,z是乙個數值。a是乙個角度。

如果a是正值表示順時針旋轉, 如果a是負值表示逆時針旋轉。

x,y,z表示方向向量,xyz的平方和如果是1的話就是標準向量,如果不是1就會轉換成乙個標準向量。x,y,z分別分別除以他們的平方和得到的值就是標準向量。 這三個值決定了將來要旋轉的時候的座標軸。

可以使用rotatex、rotatey、rotatez表示沿著某個軸的旋轉

rotatex(40deg) 等同於 rotate3d(1,0,0,40deg)

1.2.4 scale3d(sx, sy, sz)

引數分別表示沿著向相應的座標軸的縮放。注意sz其實是縮放的translatez的值,如果沒有設定translatez則sz的值無效的。

scalex、scaley、scalez分別表示x,y,z方向的縮放。

1.2.5 transform-style

表示他的子元素在變形的時候,是在乙個2d平面內變形,還是在乙個3d平面內變形。

兩個值:flat和preserve-3d

flat:變形仍然在2d空間

preserve-3d:3d空間內變形

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

>

div.container

.container div

.font

.back

.left

.right

.up.down

@keyframes my_rotateto}

style

>

head

>

>

class

="container"

>

class

="font"

>

前div

>

class

="back"

>

後div

>

class

="left"

>

左div

>

class

="right"

>

右div

>

class

="up"

>

上div

>

class

="down"

>

下div

>

div>

body

>

html

>

transition屬性定義乙個元素兩種狀態之間的過渡。是下面四個屬性的簡寫:

transition-property, transition-duration, transition-timing-function, transition-delay

不同的狀態可以通過偽類像:hover、:active來定義。也可以通過js**來動態的改變。

lang

="en"

>

>

charset

="utf-8"

>

>

過渡title

>

>

.box

.box:hover

style

>

head

>

>

class

="box"

>

div>

body

>

html

>

如果想同時定義多個過渡屬性,則可以使用逗號分開。

transition: width 2s linear 1s, height 3s linear 2s;

過渡屬性和過渡週期不能省略。

延遲時間如果不設定預設是 0s

過渡函式主要有以下幾個值:

如果不設定預設是:ease

transition-timing-function: ease;

transition-timing-function: ease-in;

transition-timing-function: ease-out;

transition-timing-function: ease-in-out;

transition-timing-function: linear;

transition-timing-function: step-start;

transition-timing-function: step-end;

​ 我們在使用 transition實現動畫的時候只能指定要改變的屬性的開始值和結束值,然後在這兩個值之間進行平滑過渡的方式來實現動畫效果,因此不能實現比較複雜的動畫效果

​ 而animation通過定義多個關鍵幀( keyframes )以及定義每個關鍵幀中元素的屬性值來實現更為複雜的動畫效果。

下面的**列出了 @keyframes 規則和所有動畫屬性:

CSS相關知識

css cascading style sheets的縮寫 翻譯為 層疊樣式表 或者 級聯樣式表 簡稱樣式表。作用 它主要是用來給html網頁來設定外觀或者樣式。css 規則由兩個主要的部分構成 選擇器,以及一條或多條宣告。選擇器通常是您需要改變樣式的 html 元素。每條宣告由乙個屬性和乙個值組成...

css3動畫相關

相容性寫法為 transform origin x y z x,y,z可以是百分比和畫素 webkit transform origin x y z chrome safari moz transform origin x y z firefox o transform origin x y z o...

css 3d 動畫 相關

transform style preserve 3d 設定3d模式perspective 700px 屬性定義 3d 元素距檢視的距離,以畫素計。該屬性允許您改變 3d 元素檢視 3d 元素的檢視。當為元素定義 perspective 屬性時,其子元素會獲得透視效果,而不是元素本身perspect...