jQuery制作水平多级下拉菜单

本篇体验使用jQuery制作水平的、多级的、下拉菜单。

下拉菜单的html部分如下。

<body>
    <nav class="main-nav">
        <ul class="nav-list">
            <li><a href="#">主页</a></li>
            <li><a href="#">产品</a></li>
            <li><a href="#">服务</a>
                <ul class="dropdown">
                    <li><a href="#">网页设计</a></li>
                    <li><a href="#">图形设计</a></li>
                    <li><a href="#">视频制作</a></li>
                </ul>
            </li>
            <li><a href="#">联系我们</a></li>
        </ul>
    </nav>
</body>

写一个DropDownMenu.css样式文件。先把一级菜单样式设置好。其中的一个关键点是:需要把li的position属性设置为relative,然后再把li的子元素a的position属性设置为absolute,这样,a就可以以li为参照进行绝对定位了。

.main-nav {
    background-color: #333;
    border-bottom: 2px solid #aaa;
    width: 100%;
    height: 40px;
}

.nav-list {
    list-style: none;
    padding-left: 0;
    width: 900px;
    margin: 0 auto;
}

.nav-list > li {
    margin: 0;
    float: left;
    width: 120px;
    height: 40px;
    position: relative; /*设置relative后,li的子元素可以在li中绝对定位*/
}

.nav-list > li > a {
    color: #ddd;
    text-decoration: none;
    position: absolute;
    width: 120px; /*与li的宽度一致,保证a的区域大小与li一致,方便点击*/
    height: 40px; /*与li的高度一致,保证a的区域大小与li一致,方便点击*/
    text-align: center;
    padding-top: 12px;
    box-sizing: border-box;
}

.nav-list > li > a:hover {
    background-color: #555;
}

以上,box-sizing属性用来定义一块区域所包含的内容,它的属性值包括:
box-sizing: content-box|border-box|initial|inherit;

设置为border-box,意味着width和height属性只包括区域内内容、padding、border,不包括margin。
设置为content-box,意味着width和height属性只包括区域内内容,不包括border, padding, margin。
设置为inherit,意味着width和height属性包括的内容和父级元素一致。
设置为initial,意味着width和height属性包括区域内内容、padding、border、margin。

在主页面引用该样式文件。

<link href="DropDownMenu.css" rel="stylesheet" />

一级菜单设置完了,接下来设置下拉菜单部分。需要把ul设置为相对定位,因为它要相对于父级li来定位。

.dropdown {
    display: none;
    list-style: none;
    position: relative;
    top: 40px;
    padding-left: 0;
    width: 120px;
}

.dropdown li {
    background-color: #555;
    position: relative;
    width: 120px;
    height: 35px;
}

.dropdown li a {
    color: #ddd;
    text-decoration: none;
    position: absolute;
    width: 120px;
    height: 35px;
    padding: 10px 0 0 10px;
    box-sizing: border-box;
}

.dropdown li a:hover {
    background-color: #777;
}

还有一点,我们希望在显示菜单的时候,首先隐藏二级菜单。在.dropdown增加一个display属性。

.dropdown {
    display: none;
    list-style: none;
    position: relative;
    top: 40px;
    padding-left: 0;
    width: 120px;
}

最后,就到了jquery部分了。我们希望:当把鼠标移动到具有二级菜单的li时,让对应的二级ul出现,而当鼠标移出具有二级菜单的li时,让对应的二级ul消失。

    <script src="Scripts/jquery-2.1.1.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $(‘li‘).has(‘.dropdown‘).hover(
                function() {
                    $(this).find(‘.dropdown‘).slideDown();
                },
                function() {
                    $(this).find(‘.dropdown‘).slideUp();
                }
            );
        });
    </script>

总结:
1、为了确保li和子元素a区域大小一致,需要把li设置为相对定位,把a设置为绝对定位,并且两者的宽和高保持一致。
2、为了确保二级菜单ul的位置在一级li的正下方,需要把二级菜单的ul设置为相对定位。
3、jquery中$(this)是指当前上下文。

jQuery制作水平多级下拉菜单

时间: 2024-10-12 13:36:03

jQuery制作水平多级下拉菜单的相关文章

jQuery制作一个多彩下拉菜单按钮

最终效果图: html代码: 1 <div id="list"> 2 <div id="btn"> 3 <div class="icon"> 4 <span></span> 5 <span></span> 6 <span></span> 7 </div> 8 </div> 9 <ul> 10 <li

基于jQuery带图标的多级下拉菜单

之前为大家分享了很多导航菜单.今天我们要来分享一款很不错的jQuery左侧带小图标的多级下拉菜单,菜单是垂直的,每一个菜单项带有一个小图标,看起来非常专业.并且菜单支持无限极下拉,所以对各位Web开发者来说非常实用.菜单时基于jQuery的,所以基本可以支持所有的浏览器. 在线预览   源码下载 实现的代码. html代码: <div class="content"> <ul class="vertical-nav dark red"> &l

Bootstrap 3 &amp; 4 的多级下拉菜单示例

Bootstrap 虽好,但对于复杂的界面,还是有N多组件需要自己扩展,并且要往简洁.大气的Bootstrap界面上靠,着实要费一些功夫.下面分享一个Bootstrap 3的多级下拉菜单,无需第三方Js脚本,复制后直接可用. Bootstrap 3 的多级下拉菜单示例 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title&

JQuery -&gt; 超级简单的下拉菜单

1. create a new accout, create orginazation, create repo 2. install git in your local pc Note: you can create ssh key to avoid username/password input for github operation https://help.github.com/articles/generating-ssh-keys https://help.github.com/a

DroDownList控件多级下拉菜单

后台代码: /// <summary> /// 绑定下拉菜单 /// </summary> private void BindDropList() { DataTable dt = bacManage.GetAllArticleCategory(); CreateLevelDropDown(drpCategoryId, dt); } /// <summary> /// 创建分级下拉框 /// </summary> /// <param name=&qu

jquery如何删除select下拉菜单中所有的option项

jquery如何删除select下拉菜单中所有的option项:在实际应用中,有可能要求一次性删除所有的select下拉菜单的option选项,方法非常的简单.select下拉菜单: <select id="mayi"> <option value="1">蚂蚁部落一</option> <option value="2">蚂蚁部落二</option> </select> 删除

jQuery实现横向纵向下拉菜单

学习javascript中有提到构建自己的javascript库,比如jQuery,这些库中包含自己常用的方便的小函数,这些函数可以让自己的代码更加清晰易懂,而且当别人调用时也很容易理解,当然编写库时需要注意一些问题,比如大小写.括号引号.换行等,这些为jQuery学习提供了一些基础,jQuery的学习主要通过几个实例来了解jQuery的应用,通过查看API运用特定方法实现自己的效果,它让网页动了起来.通过代码如何实现一个横向和纵向下拉菜单的效果. 首先在HTML中通过ul和li表示页面中的菜单

jQuery/CSS3大屏下拉菜单 自定义子菜单内容

这是一款样式很酷的jQuery/CSS3下拉菜单,首先这款CSS3菜单是宽屏的,主要是下拉菜单非常大气,更重要的是,下拉菜单的内容可以自己定义,也就是说,下拉菜单中可以定义菜单.图片等HTML元素,是一款非常实用的jQuery/CSS3下拉菜单插件. 在线预览   源码下载

【JQuery】——横向纵向下拉菜单

在学习jQuery的过程中,遇到项目中最常用到的下拉菜单,本着高效的原则,在此总结一下横向和纵向下拉菜单的实现效果,形成自己的小类库,以便自己在项目过程中能够方便的调用. HTML部分: 引用menu.css.jquery.js(已经封装好的)和menu.js文件 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&quo