用 CSS3 和 JavaScript 製作徑向動畫選單

heloowird發表於2014-04-29

今天,讓我們來看看:如何使用CSS3和JavaScript輕鬆地實現一個簡單的徑向動畫選單。

看看下面的演示,點選按鈕,彈出徑向選單。

See the Pen Animated radial / circular menu by Creative Punch (@CreativePunch) on CodePen.


上面的codepen示例呈現了程式碼,那麼我們來介紹其中的一些細節。

HTML

我們看看HTML。我們使用HTML5的nav元素,包含一些連結元素和啟用徑向選單的按鈕。

我使用了Font Awesome圖示,同時在a標籤中新增了必要的類,以便為徑向選單中的選單項附著漂亮的圖示。

CSS

下面,我們看看部分CSS。首先,我們定義了徑向選單根容器(這裡指帶有circular-menu類的nav元素)的寬和高。我們也將position屬性定義為relative,以便於相對定位所含的選單項。

預設情況下,選單項是隱藏的。我們想作出漂亮的“淡入淡出+縮放”效果,所以初始化選單項時,將透明度設為0,並把transform屬性的scale值設為0。

你可以看到:我們使用transition屬性來定義動畫。

為了讓選單項完成放大和淡入效果,我們希望在類之間進行切換。因此我們為徑向選單定義了一個open類。

一旦open類和circle類出現在同一個元素中,那麼這個元素將根據動畫長度和transition屬性的型別應用新的樣式屬性。

當然,嵌在circle類裡面的a元素也需要樣式。除了一些常規的大小樣式,將position設定為absolute非常重要,這使得JavaScript能夠絕對定位徑向選單中的選單項。

同時我們需要定位、設計選單的開關按鈕。

現在讓我們移步至最後部分,這部分使我們的選單變成真正的徑向選單。

JavaScript

首先,我們實現點選選單開關按鈕能夠顯示、隱藏選單項的功能。

選取含menu-button類的元素來監聽點選事件。一旦你點選它,它會選取含circle類元素,並向之新增open類。

現在,最後的任務是:確定選單項的位置。

第一行程式碼所做的就是選取嵌在circle類元素裡的所有連結元素。之後可以遍歷這些元素。

然後,利用基本的幾何圖形,正弦、餘弦函式,迭代(ⅰ)來計算的CSS的 top和left屬性。

用JavaScript來定位元素,這允許您在選單使用任何數量的子元素a,接下來就交給JavaScript的數學魔法。

 

搞定!

我希望這篇文章能幫助你實現一個很酷的徑向選單。如果你做的東西真棒,盡情地在評論中分享吧!如果你真心喜歡這個教程,分享到您最喜愛的社交媒體吧!

相關文章