用CSS3和JavaScript制作径向动画菜单

今天,让我们来看看:如何使用CSS3和JavaScript轻松地实现一个简单的径向动画菜单。

站在用户的角度思考问题,与客户深入沟通,找到九龙坡网站设计与九龙坡网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册虚拟主机、企业邮箱。业务覆盖九龙坡地区。

看看下面的演示,点击按钮,弹出径向菜单。

上面的codepen示例呈现了代码,那么我们来介绍其中的一些细节。

HTML

我们看看HTML。我们使用HTML5的nav元素,包含一些链接元素和激活径向菜单的按钮。

 
 
  1.  
  2.    
  3.    
  4.      
  5.      
  6.      
  7.      
  8.      
  9.      
  10.      
  11.      
  12.   
 
  •    
  •    
  •    
  •  
  • 我使用了Font Awesome图标,同时在a标签中添加了必要的类,以便为径向菜单中的菜单项附着漂亮的图标。

    CSS

    下面,我们看看部分CSS。首先,我们定义了径向菜单根容器(这里指带有circular-menu类的nav元素)的宽和高。我们也将position属性定义为relative,以便于相对定位所含的菜单项。

      
     
    1. .circular-menu {  
    2.   width: 250px;  
    3.   height: 250px;  
    4.   margin: 50px auto 0;  
    5.   position: relative;  

    默认情况下,菜单项是隐藏的。我们想作出漂亮的“淡入淡出+缩放”效果,所以初始化菜单项时,将透明度设为0,并把transform属性的scale值设为0。

      
     
    1. .circle {  
    2.   width: 250px;  
    3.   height: 250px;  
    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属性来定义动画。

    为了让菜单项完成放大和淡入效果,我们希望在类之间进行切换。因此我们为径向菜单定义了一个open类。

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

    一旦open类和circle类出现在同一个元素中,那么这个元素将根据动画长度和transition属性的类型应用新的样式属性。

    当然,嵌在circle类里面的a元素也需要样式。除了一些常规的大小样式,将position设置为absolute非常重要,这使得JavaScript能够绝对定位径向菜单中的菜单项。

      
     
    1. .circle a {  
    2.   text-decoration: none;  
    3.   color: white;  
    4.   display: block;  
    5.   height: 40px;  
    6.   width: 40px;  
    7.   line-height: 40px;  
    8.   margin-left: -20px;  
    9.   margin-top: -20px;  
    10.   position: absolute;  
    11.   text-align: center;  
    12.    
    13. }  
    14.    
    15. .circle a:hover {  
    16.   color: #eef;  

    同时我们需要定位、设计菜单的开关按钮。

      
     
    1. .menu-button {  
    2.   position: absolute;  
    3.   top: calc(50% - 30px);  
    4.   left: calc(50% - 30px);  
    5.   text-decoration: none;  
    6.   text-align: center;  
    7.   color: #444;  
    8.   border-radius: 50%;  
    9.   display: block;  
    10.   height: 40px;  
    11.   width: 40px;  
    12.   line-height: 40px;  
    13.   padding: 10px;  
    14.   background: #dde;  
    15. }  
    16.    
    17. .menu-button:hover {  
    18.   background-color: #eef;  

    现在让我们移步至***部分,这部分使我们的菜单变成真正的径向菜单。

    JavaScript

    首先,我们实现点击菜单开关按钮能够显示、隐藏菜单项的功能。

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

    选取含menu-button类的元素来监听点击事件。一旦你点击它,它会选取含circle类元素,并向之添加open类。

    现在,***的任务是:确定菜单项的位置。

      
     
    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类元素里的所有链接元素。之后可以遍历这些元素。

    然后,利用基本的几何图形,正弦、余弦函数,迭代(ⅰ)来计算的CSS的 top和left属性。

    用JavaScript来定位元素,这允许您在菜单使用任何数量的子元素a,接下来就交给JavaScript的数学魔法。

    搞定!

    我希望这篇文章能帮助你实现一个很酷的径向菜单。如果你做的东西真棒,尽情地在评论中分享吧!如果你真心喜欢这个教程,分享到您最喜爱的社交媒体吧!

    原文链接: CREATIVE PUNCH   翻译: 伯乐在线 - heloowird

    译文链接: http://blog.jobbole.com/65551/

    文章题目:用CSS3和JavaScript制作径向动画菜单
    链接分享:http://www.shufengxianlan.com/qtweb/news40/547440.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    猜你还喜欢下面的内容

    网站营销知识

    同城分类信息