导航菜单

APP环形导航菜单设计效果

阿里云

这是一款基于 TweenMax 的炫酷手机 APP 环形导航菜单设计效果。该环形菜单默认为一个汉堡包按钮,当用户点击按钮时,子菜单会一个接一个绕着汉堡包按钮出现,效果非常酷。

使用方法:

该环形菜单特效的 HTML 代码非常简单,如下:

也想出现在这里?联系我们
创客主机
  1. <div class="bg"></div>
  2. <div class="phone">
  3.   <div class="screen">
  4.     <h1 class="hello">Welcome!</h1>
  5.     <div class="nav">
  6.       <a class="home" href="#">
  7.         <img class="open" src="img/menu.svg" title="Menu" width="30">
  8.         <img class="close" src="img/close.svg" title="Close" width="30">
  9.       </a>
  10.       <a class="item profile" href="#"><img src="img/user.svg" alt="User" width="25"></a>
  11.       <a class="item like" href="#"><img src="img/heart.svg" alt="Like" width="25"></a>
  12.       <a class="item message" href="#"><img src="img/message.svg" alt="Message" width="25"></a>
  13.       <a class="item tools" href="#"><img src="img/tools.svg" title="Tools" width="25"></a>
  14.     </div><!-- .nav -->
  15.   </div><!-- .screen -->
  16. </div><!-- .phone -->

CSS 样式:

.nav 元素是导航菜单,采用相对定位。它下面的每一个[a]元素都是一个圆形按钮,尺寸为 50 像素。

  1. .nav {
  2.   position: relative;
  3.   top: 12px;
  4.   left: 12px;
  5. }
  6. .nav a {
  7.   width: 50px;
  8.   height: 50px;
  9.   border-radius: 50%;
  10.   text-align: center;
  11.   display: block;
  12.   box-sizing: border-box;
  13.   background-color: #FFFFFF;
  14.   box-shadow: 0 2px 4px rgba(0, 0, 0, 0.14);
  15. }
  16. .nav a img {
  17.   position: relative;
  18.   top: 50%;
  19.   transform: translateY(-50%);
  20. }

a.home 元素是主菜单按钮。它的尺寸为 60 像素,使用绝对定位,位于左上角位置。其它的子菜单按钮使用绝对定位分布在它的周围。

  1. .nav a.home {
  2.   width: 60px;
  3.   height: 60px;
  4.   position: absolute;
  5.   left: 0px;
  6.   top: 0px;
  7.   z-index: 2;
  8. }
  9. .nav a.home img { 
  10.   position: relative;
  11.   top: 50%;
  12.   left: 50%;
  13.   transform: translate(-50%, -50%);
  14. }
  15. .nav a.profile { 
  16.   position: absolute;
  17.   left: 113px;
  18.   top: -5px;
  19. }
  20. .nav a.like {
  21.   position: absolute;
  22.   left: 115px;
  23.   top: 59px;
  24. }
  25. .nav a.message {
  26.   position: absolute;
  27.   left: 65px;
  28.   top: 106px;
  29. }
  30. .nav a.tools {  
  31.   position: absolute;
  32.   top: 114px;
  33.   left: 0;
  34. }

主菜单按钮中有两张图片,分别为汉堡包图片和关闭按钮图片。在主菜单按钮被激活的时候,会被添加.active class 类,此时关闭按钮图片被隐藏,反之显示关闭按钮图片。

  1. .home:not(.active) .close, .home.active .open {
  2.   display: none;
  3. }
  4. .home.active .close, .home:not(.active) .open {
  5.   display: block;
  6. }

JavaScript 代码:

特效中使用 TweenMax 来控制环形菜单的打开和关闭,为相应的元素添加和移除项的 class 类。

  1. $(window).load(function() {
  2.   var tl = new TimelineMax({
  3.       paused: true
  4.     }),
  5.     tlback = new TimelineMax({
  6.       paused: true
  7.     }),
  8.     intro = new TimelineMax();
  9.  
  10.   intro
  11.     .from('.phone', 1, {
  12.       autoAlpha: 0
  13.     })
  14.     .from('.hello', 0.5, {
  15.       autoAlpha: 0
  16.     }, 0.5)
  17.  
  18.   tl
  19.     .to('.hello', 0.3, {
  20.       autoAlpha: 0
  21.     })
  22.     .set('.home', {
  23.       className: '+=active'
  24.     })
  25.     .set('.item', {
  26.       scale: 1
  27.     }) // fix for a bug when on of the item was appearing at 0.5 scale
  28.     .to('.home', 0.1, {
  29.       scale: 1.2,
  30.       yoyo: true,
  31.       repeat: 1
  32.     })
  33.     .to('.home', 0.3, {
  34.       x: 20,
  35.       y: 20,
  36.       ease: Elastic.easeOut.config(1, 0.5)
  37.     }, 0)
  38.     .staggerFrom('.item', 0.7, {
  39.       left: 20,
  40.       top: 20,
  41.       autoAlpha: 0,
  42.       scale: 0.5,
  43.       ease: Elastic.easeOut.config(1, 0.5)
  44.     }, 0.1);
  45.   tlback
  46.     .set('.home', {
  47.       className: '-=active'
  48.     })
  49.     .staggerTo('.item', 0.7, {
  50.       left: 20,
  51.       top: 20,
  52.       autoAlpha: 0,
  53.       scale: 0.5,
  54.       ease: Elastic.easeOut.config(1, 0.5)
  55.     }, 0.1)
  56.     .to('.hello', 0.3, {
  57.       autoAlpha: 1
  58.     })
  59.     .to('.home', 0.3, {
  60.       x: 0,
  61.       y: 0,
  62.       ease: Power2.easeOut
  63.     }, 0.5);
  64.   $(document).on('click', '.home:not(.active)', function(e) {
  65.     event.preventDefault();
  66.     tl.play(0);
  67.   });
  68.  
  69.   $(document).on('click', '.home.active, .item', function(e) {
  70.     event.preventDefault();
  71.     TweenMax.to($(this), 0.1, {
  72.       scale: 1.2,
  73.       yoyo: true,
  74.       repeat: 1,
  75.       onComplete: function() {
  76.         tlback.play(0)
  77.       }
  78.     });
  79.   });
  80. });

APP 环形导航菜单设计效果

已有 537 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!