偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用 CSS3 和 JavaScript 制作徑向動(dòng)畫菜單

開發(fā) 前端
今天,讓我們來(lái)看看:如何使用CSS3和JavaScript輕松地實(shí)現(xiàn)一個(gè)簡(jiǎn)單的徑向動(dòng)畫菜單。

今天,讓我們來(lái)看看:如何使用CSS3和JavaScript輕松地實(shí)現(xiàn)一個(gè)簡(jiǎn)單的徑向動(dòng)畫菜單。

看看下面的演示,點(diǎn)擊按鈕,彈出徑向菜單。


上面的codepen示例呈現(xiàn)了代碼,那么我們來(lái)介紹其中的一些細(xì)節(jié)。

HTML

我們看看HTML。我們使用HTML5的nav元素,包含一些鏈接元素和激活徑向菜單的按鈕。

  1. <nav class="circular-menu"> 
  2.    
  3.   <div class="circle"> 
  4.     <a href="" class="fa fa-home fa-2x"></a> 
  5.     <a href="" class="fa fa-facebook fa-2x"></a> 
  6.     <a href="" class="fa fa-twitter fa-2x"></a> 
  7.     <a href="" class="fa fa-linkedin fa-2x"></a> 
  8.     <a href="" class="fa fa-github fa-2x"></a> 
  9.     <a href="" class="fa fa-rss fa-2x"></a> 
  10.     <a href="" class="fa fa-pinterest fa-2x"></a> 
  11.     <a href="" class="fa fa-asterisk fa-2x"></a> 
  12.   </div> 
  13.    
  14.   <a href="" class="menu-button fa fa-bars fa-2x"></a> 
  15.    
  16. </nav> 

我使用了Font Awesome圖標(biāo),同時(shí)在a標(biāo)簽中添加了必要的類,以便為徑向菜單中的菜單項(xiàng)附著漂亮的圖標(biāo)。

CSS

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

  1. .circular-menu {  
  2.   width250px;  
  3.   height250px;  
  4.   margin50px auto 0;  
  5.   positionrelative;  

默認(rèn)情況下,菜單項(xiàng)是隱藏的。我們想作出漂亮的“淡入淡出+縮放”效果,所以初始化菜單項(xiàng)時(shí),將透明度設(shè)為0,并把transform屬性的scale值設(shè)為0。

  1. .circle {  
  2.   width250px;  
  3.   height250px;  
  4.   opacity: 0;  
  5.    
  6.   -webkit-transform: scale(0);  
  7.   -moz-transform: scale(0);  
  8.   -transform: scale(0);  
  9.    
  10.   -webkit-transition: all 0.4s ease-out;  
  11.   -moz-transition: all 0.4s ease-out;  
  12.   transition: all 0.4s ease-out;  

你可以看到:我們使用transition屬性來(lái)定義動(dòng)畫。

為了讓菜單項(xiàng)完成放大和淡入效果,我們希望在類之間進(jìn)行切換。因此我們?yōu)閺较虿藛味x了一個(gè)open類。

  1. .open.circle {  
  2.   opacity: 1;  
  3.    
  4.   -webkit-transform: scale(1);  
  5.   -moz-transform: scale(1);  
  6.   -transform: scale(1);  

一旦open類和circle類出現(xiàn)在同一個(gè)元素中,那么這個(gè)元素將根據(jù)動(dòng)畫長(zhǎng)度和transition屬性的類型應(yīng)用新的樣式屬性。

當(dāng)然,嵌在circle類里面的a元素也需要樣式。除了一些常規(guī)的大小樣式,將position設(shè)置為absolute非常重要,這使得JavaScript能夠絕對(duì)定位徑向菜單中的菜單項(xiàng)。

  1. .circle a {  
  2.   text-decorationnone;  
  3.   colorwhite;  
  4.   displayblock;  
  5.   height40px;  
  6.   width40px;  
  7.   line-height40px;  
  8.   margin-left-20px;  
  9.   margin-top-20px;  
  10.   positionabsolute;  
  11.   text-aligncenter;  
  12.    
  13. }  
  14.    
  15. .circle a:hover {  
  16.   color#eef;  

同時(shí)我們需要定位、設(shè)計(jì)菜單的開關(guān)按鈕。

  1. .menu-button {  
  2.   positionabsolute;  
  3.   top: calc(50% - 30px);  
  4.   left: calc(50% - 30px);  
  5.   text-decorationnone;  
  6.   text-aligncenter;  
  7.   color#444;  
  8.   border-radius: 50%;  
  9.   displayblock;  
  10.   height40px;  
  11.   width40px;  
  12.   line-height40px;  
  13.   padding10px;  
  14.   background#dde;  
  15. }  
  16.    
  17. .menu-button:hover {  
  18.   background-color#eef;  

現(xiàn)在讓我們移步至***部分,這部分使我們的菜單變成真正的徑向菜單。

JavaScript

首先,我們實(shí)現(xiàn)點(diǎn)擊菜單開關(guān)按鈕能夠顯示、隱藏菜單項(xiàng)的功能。

  1. document.querySelector('.menu-button').onclick = function(e) {  
  2.    e.preventDefault(); document.querySelector('.circle').classList.toggle('open');  

選取含menu-button類的元素來(lái)監(jiān)聽點(diǎn)擊事件。一旦你點(diǎn)擊它,它會(huì)選取含circle類元素,并向之添加open類。

現(xiàn)在,***的任務(wù)是:確定菜單項(xiàng)的位置。

  1. var items = document.querySelectorAll('.circle a');  
  2.    
  3. for(var i = 0, l = items.length; i < l; i++) {  
  4.   items[i].style.left = (50 - 35*Math.cos(-0.5 * Math.PI - 2*(1/l)*i*Math.PI)).toFixed(4) + "%";  
  5.   items[i].style.top = (50 + 35*Math.sin(-0.5 * Math.PI - 2*(1/l)*i*Math.PI)).toFixed(4) + "%";  

***行代碼所做的就是選取嵌在circle類元素里的所有鏈接元素。之后可以遍歷這些元素。

然后,利用基本的幾何圖形,正弦、余弦函數(shù),迭代(ⅰ)來(lái)計(jì)算的CSS的 top和left屬性。

用JavaScript來(lái)定位元素,這允許您在菜單使用任何數(shù)量的子元素a,接下來(lái)就交給JavaScript的數(shù)學(xué)魔法。

搞定!

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

原文鏈接: CREATIVE PUNCH   翻譯: 伯樂(lè)在線 - heloowird

譯文鏈接: http://blog.jobbole.com/65551/

責(zé)任編輯:林師授 來(lái)源: 伯樂(lè)在線
相關(guān)推薦

2012-09-13 09:24:31

CSSJSjQ

2012-05-14 16:29:53

HTML5

2012-05-24 11:03:55

HTML5

2017-05-11 15:20:52

CSS3動(dòng)畫前端

2013-01-30 16:15:40

adobeHTML5css3

2012-05-30 09:22:56

Hybrid App助HTML5JavaScript

2011-05-11 16:13:43

CSS3

2009-11-05 10:33:06

CSS菜單

2014-02-24 13:49:13

HTML5CSS3下拉菜單

2011-06-29 13:22:58

CSS3

2011-11-18 13:25:48

HTML 5

2015-10-14 09:50:11

css3動(dòng)畫模擬

2011-03-22 08:54:02

HTML 5CSS3JavaScript

2012-06-07 09:23:45

ibmdw

2012-05-11 09:37:34

HTML5

2015-10-10 14:22:46

jQueryCSS3欄菜單

2011-12-16 11:11:36

HTML 5

2015-12-01 09:52:03

CSS3動(dòng)畫源碼

2021-09-08 22:28:13

前端Css3動(dòng)畫

2010-09-13 13:35:39

CSS屬性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)