JQ滑动导航菜单的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQ滑动导航菜单的实现相关的知识,希望对你有一定的参考价值。

前言:不多说直接看效果!!!
这样的菜单我们在一般的网站上见到的也比较多,有比较好的用户体验!
 
原理:这个很重要,任何的特效只要原理搞明白了,实现起来都是很容易的!这个特效的原理很简单,菜单的样式我们都很容易实现就是一些CSS而已!
中间那个滑块其实就是一个定位为:absolute 的元素,每当鼠标放到一个A元素上的时候用JQ获取到当前A元素的位置和宽度,再用JQ的animate方法,以动画的形式给元素即可!
当然你在这里也可以也一些其它的动画

1、DOM结构
<div class="nav-wrapper">
        <div class="container">
            <ul id="nav-list">
                <li class="nav-item"><a href="http://www.lanrentuku.com/" class="active" target="_blank">网站首页</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">网上商城</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">智能管家</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">技术支持</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">应用案例</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">关于我们</a></li>
                <li class="nav-item"><a href="http://www.lanrentuku.com/" target="_blank">懒人图库</a></li>
            </ul>
            <div class="animate-block"></div>
        </div>
    </div>

  

2、对应的CSS
 1 *{margin: 0;padding: 0;}
 2         body{ font-family:"Microsoft YaHei";}
 3         .container {
 4             width: 1200px;
 5             margin: 30px auto;
 6             position: relative;
 7         }
 8         li {
 9             list-style: none;
10         }
11         .nav-wrapper {
12             background-color: #0191d7;
13             height: 50px;
14         }
15         #nav-list {
16             position: relative;
17             z-index: 1;
18         }
19         #nav-list .nav-item {
20             float:left;
21             height: 50px;
22         }
23         #nav-list li a{
24             display: block;
25             padding: 0 50px;
26             height: 50px;
27             font-size: 16px;
28             line-height: 50px;
29             color: #fff;
30             text-decoration: none;
31         }
32         .animate-block {
33             position: absolute;
34             height: 50px;
35             background-color: #2B6B8A;
36             left: 0;
37             top:0;
38             z-index: 0;
39         }
40         .active {
41             box-shadow: 0 0 2px rgba(0,0,0,.1);
42         }
View Code

 

3、JQ代码
$(function () {
        var $active = $(".active"); //当前选中的菜单
        var $active_w = $active.innerWidth();
        var $active_l = $active.position().left;
        var $animate_block = $(".animate-block");
 
        //设置滑块初始位置
        $(".animate-block").css({width:$active_w,left:$active_l});
 
        //a事件
        $("#nav-list>li").hover(function () {
            var index = $(this).index();
            var $a_cur = $("#nav-list a").eq(index);//得到当前元素
            var width = $a_cur.innerWidth();
            var left = $a_cur.position().left;
            $(".animate-block").stop().animate({width:width,left:left});
        },function () {
            $(".animate-block").stop().animate({width:$active_w,left:$active_l});
        });
    });
View Code

 

参考资料:

 

以上是关于JQ滑动导航菜单的实现的主要内容,如果未能解决你的问题,请参考以下文章

滑块菜单片段中的可交换选项卡

jQuery右侧滑动快速导航条

找不到用于片段的id 0x7f0800c4的视图

手风琴图片和钢琴导航栏JQ滑动特效

如何在导航栏菜单中实现平滑的向下滑动效果

12个用得着的 JQuery 代码片段