YUI3仿苹果风格图标滑出导航菜单

作者:idd.chiang 发布时间:February 8, 2010 分类:Javascript/AS,YUI/Jquery/mootool

Apple-Style Slide Out Navigation Menu by YUI
IE7、FF3.5、safari、opera、chrome下测试通过,IE8无环境未测。

苹果风格的导航是比较炫酷的,用YUI3模仿这种导航风格。当鼠标移至菜单上,图标上移至顶部,然后滑动至展示区;鼠标移出时,图标移至导航下方,滑动至菜单后隐藏。

Tutorial:示例

» 首先我们来看看HTML:

<div class="navigation">
    <ul class="menu fl" id="menu">
        <li><span class="game"><br/></span><a href="#" class="first">Game</a></li> 
        <li><span class="water"><br/></span><a href="#">Water</a></li> 
        <li><span class="code"><br/></span><a href="#">Coding</a></li> 
        <li><span class="tools"><br/></span><a href="#">ToolsBox</a></li> 
        <li><span class="curve"><br/></span><a href="#">Curve</a></li> 
        <li><span class="options"><br/></span><a href="#" class="last">Options</a></li> 
    </ul>
</div>

span是icon图标,用作动画使用。当鼠标移上A标签时,触发动画。这里不能用Event.addListener 和 Event.on方式去侦听事件,因为icon动画时会移至A标签上层,导致监听对象发生变化,用relatedTarget判断span标签也会触发多次mouseover和mouseout。
所以,将鼠标事件的触发给LI是最好的办法,li内的元素仅用作动画展示,不绑定如何事件。这里用到delegate,将事件指派给#menu下的li

» 导航的CSS

.navigation{
    position:relative; /*IE hidden need*/
    overflow:hidden;/*Hiding*/
    padding-bottom:100px;/*Icon Showcase*/
    _zoom:1; /*For Ie6 hack*/
}
ul.menu{
    border:1px solid #b0b0b0; 
    border-width:0 1px 0;
    position:relative; /*zIndex need*/
    -moz-border-radius:4px;
    -webkit-border-radius:4px;
}
ul.menu li{
    float:left;
    position:relative; 
}


» 导航链接的CSS

ul.menu li a{
    background:#fff url(bgMenu.png) repeat-x left 1px;
    font:normal 700 14px/1.4em 'tahoma','simsun' ;
    padding:11px 0px;
    width:128px;
    color:#333333;
    float:left;
    text-decoration:none;
    text-shadow: 0 1px 1px #fff;
    text-align:center;
    border:1px solid #b0b0b0;
    border-right:1px solid #a1a1a1;
    border-left:1px solid #e8e8e8;
    -moz-box-shadow:0 2px 3px #000;
    -webkit-box-shadow:0 2px 3px #000;
    *border-bottom:2px solid #7b7b7b; /*For IE Looklike 3D Navbar*/
}
ul.menu li a.hover{
    background-position:0 -48px; 
    color:#fff;
    text-shadow: 0 -1px 1px #000;
}
ul.menu li a.first{
    -moz-border-radius:4px 0px 0px 4px;
    -webkit-border-radius:4px 0px 0px 4px;
    border-left:0 none;
}
ul.menu li a.last{
    -moz-border-radius:0px 4px 4px 0px;
    -webkit-border-radius:0px 4px 4px 0px;
    border-right:0 none;
}

» SPAN图标设置CSS

ul.menu li span{
    width:64px;
    height:64px;
    background-repeat:no-repeat;
    background-color:transparent;
    position:absolute;
    z-index:-1;
    top:-17px;
    left:33px;
}
ul.menu li span.game{background-image:url(icons/game.png);}
ul.menu li span.water{background-image:url(icons/water.png);}
ul.menu li span.code{background-image:url(icons/code.png);}
ul.menu li span.tools{background-image:url(icons/tools.png);}
ul.menu li span.curve{background-image:url(icons/curve.png);}
ul.menu li span.appstore{background-image:url(icons/appstore.png);}
ul.menu li span.options{background-image:url(icons/options.png);}

» SPAN图标设置CSS
鼠标mouseover到LI时,设置图标出现动画。

Y.delegate('mouseover', function(e){
    var _span = this.one('span'), 
        _a = this.one('a');
    _a.addClass('hover');
    _span.setStyle('zIndex','1');
    var anim = new Y.Anim({
        node:_span,
        to:{
            top:45
        },
        duration: 0.3
    });
    anim.run();
}, '#menu', 'li');

标签: css, YUI, js, apple-style, apple, apple-like, beautiful, tutorial, menu, navigation, icons, yui3, 苹果风格, 导航

添加新评论 »

Copyright © 不名一格 Powered by Typecho 登录 京ICP备05013217号