这是一款谷歌Material Design风格的炫酷全屏隐藏菜单jQuery特效。该菜单特效开始时以汉堡包图标的形式隐藏菜单,但用户点击汉堡包图标后,菜单会从图标处开始以点击波的形式扩展到全屏,效果非常酷。
该菜单特效可以用于移动手机设备使用,也可以用于台式机使用,相应的修改一下CSS代码即可使用。
使用方法
HTML结构
该隐藏菜单特效为了演示,制作了以个模拟手机屏幕的小窗口。导航菜单使用标准的无序列表结构。点击波效果需要的圆形使用一个空的<div>
来制作。汉堡包图标为了制作动画效果,使用一个嵌套<div>
的HTML结构。
<!--模拟手机屏幕--> <div class="screen"> <div class="navbar"></div> <div class="list"> <!--模拟屏幕中的列表项--> <div class="item"> <div class="img"></div> <span></span> <span></span> <span></span> </div> ... </div> <!--点击波效果需要的圆形--> <div class="circle"></div> <!--菜单列表--> <div class="menu"> <ul> <li><a href="">About</a></li> <li><a href="">Share</a></li> <li><a href="">Activity</a></li> <li><a href="">Settings</a></li> <li><a href="">Contact</a></li> </ul> </div> <!--汉堡包图标--> <div class="burger"> <div class="x"></div> <div class="y"></div> <div class="z"></div> </div> </div>
CSS样式
插件中使用CSS3 transforms和transition,配以适当的cubic-bezier
函数来制作各种动画效果。其中点击波的效果的CSS样式如下:
div.circle{ border-radius: 50%; width: 0px; height: 0px; position:absolute; top: 35px; left: 36px; background:#fff; opacity:1; -webkit-transition: all 300ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -moz-transition: all 300ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -ms-transition: all 300ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -o-transition: all 300ms cubic-bezier(0.000, 0.995, 0.990, 1.000); transition: all 300ms cubic-bezier(0.000, 0.995, 0.990, 1.000); } div.circle.expand{ width:1200px; height:1200px; top: -560px; left: -565px; -webkit-transition: all 400ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -moz-transition: all 400ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -ms-transition: all 400ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -o-transition: all 400ms cubic-bezier(0.000, 0.995, 0.990, 1.000); transition: all 400ms cubic-bezier(0.000, 0.995, 0.990, 1.000); }
在每个菜单项被点击后,会出现圆形光波往回收缩的效果。在一个菜单项被点击之后,插件会为菜单项添加animate
class,同时会移除div.circle
的expand
,这样,光波就会往回缩放到最小状态。
div.menu { height: 568px; width: 320px; position: absolute; top: 0px; left: 0px; } div.menu ul li { list-style: none; position:absolute; top:50px;; left:0; opacity:0; width:320px; text-align:center; font-size:0px; -webkit-transition: all 70ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -moz-transition: all 70ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -ms-transition: all 70ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -o-transition: all 70ms cubic-bezier(0.000, 0.995, 0.990, 1.000); transition: all 70ms cubic-bezier(0.000, 0.995, 0.990, 1.000); } div.menu ul li a { color:#4a89dc; text-transform:uppercase; text-decoration:none; letter-spacing:3px; } div.menu li.animate{ font-size:21px; opacity:1; -webkit-transition: all 150ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -moz-transition: all 150ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -ms-transition: all 150ms cubic-bezier(0.000, 0.995, 0.990, 1.000); -o-transition: all 150ms cubic-bezier(0.000, 0.995, 0.990, 1.000); transition: all 150ms cubic-bezier(0.000, 0.995, 0.990, 1.000); }
JAVASCRIPT
该菜单特效使用会自动判断是touch事件还是鼠标点击事件。并使用jQuery来为汉堡包图标的点击事件和菜单的点击事件添加以移除相应的class。在打开和关闭菜单的时候,代码中都使用了setTimeout函数来添加一些延迟。js代码非常简单,仔细研究一下就会明白代码的含义。