關於css3的icon翻轉

2021-06-22 00:13:07 字數 1554 閱讀 3242

效果比較簡單,這裡總結一下.

1.基本結構

實現方法可能有很多種,我這裡用的是transform: rotatey()方法.

首先結構如下:

反轉的實現是準備兩層面,一層是hover前的,另一層是翻轉後的展現,這裡是普通的文字.

由於是反轉的兩層,因此兩層都需要設定position:absolute;讓它脫離文件流.

2.旋轉角度不是180度,而是90度

兩層不是普通的疊加,也不是普通的反轉,而是呈90度的鑲嵌.如圖:

**如下(省略無關**):

a.front-face img

a.front-face p

a.front-face:hover img

a.front-face:hover p

3.自然過度,transition

然而,你會發現轉換得十分生硬,可以說是根本沒有旋轉的體驗.因此需要乙個過渡.

過渡,自然想到css3的transition.

a.front-face img

a.front-face p

4.兩層旋轉間的延遲,opacity

太好了,到這一步已經能基本旋轉.然而,旋轉得十分不自然,為什麼呢?

我們思考一下,兩層圍繞中心點各自在旋轉90度,第一層在開始轉的時候,第二層也在開始轉.因此旋轉得軌跡就不是乙個圓,而是兩邊都在翻頁.

而正常的旋轉是怎樣的?思考一下,正常的旋轉是應該第一層旋轉90度,然後第二層才開始接著旋轉90度,形成乙個圓的軌跡.

於是乎,剛開始我想到延遲,這裡的旋轉時間是0.2s,因此文字層(第二層)就延遲0.2s不就行了?

a.front-face p
但是,並沒有那麼簡單.

第二層延遲是讓滑鼠mouseover旋**然了,但是當滑鼠離開,mouseout的時候動畫會反轉演繹.

這時候文字層(第二層)在正面,它會延遲0.2s開始,但是這時候層(第一層)已經開始轉了,這樣簡直就不是旋轉了.

要做到旋轉和反旋轉都自然是圓的軌跡,怎麼辦呢?

兩種方法:

1.用js,當旋轉結束後,把層和文字層的樣式transition-delay的值交換,乙個延遲0秒,另乙個延遲0.2秒,然後切換兩個延遲值.

//tq:但是這樣就不是純css3實現了,而且十分難處理.

2.思考了各種方法,最後想複雜了,其實可以用opacity(透明度)來解決,層是從1到0,文字層是從0到1,在transition的幫助下,兩個值切換簡單,自然.而且反旋轉也會自動調轉過來,也就是曾0到1,文字層1到0.

a.front-face img

a.front-face p

a.front-face:hover img

a.front-face:hover p

5.硬體gpu加速

硬體加速十分關鍵,其實這裡我看大神的講解沒太搞明白,不過加一句:transform: translatez(0);可以解決.

CSS3 動畫 水平翻轉

首先,我們在網頁裡面放置 3 個圖示。相應的 html 為 class mega octicon octicon mortar board anim flip span class mega octicon octicon eye anim flip span class mega octicon ...

CSS3實現翻轉 Flip 效果

今天,我們用比較簡潔的css3來實現翻轉效果。當滑鼠滑過包含塊時,元素整體翻轉180度,以實現 正 反 面的切換。分析 container,flip為了實現動畫效果做準備。front,back各包裹一張。實現該效果的html如下 1.元素布局 為了實現以上效果,先進行元素布局。給.front,bac...

CSS3實現翻轉 Flip 效果

class container class flip class front div class back div div div 為了讓卡片的正面和背面在相同位置重疊,給.front,back相對定位.flip進行絕對定位 container,front,back flip front,back ...