zoukankan      html  css  js  c++  java
  • jQuery动态创建二级下拉菜单

    创建网站的时候常常需要用到下拉菜单,每次都要自己写,总觉得太麻烦了,于是就写了一个动态生成下拉菜单的函数,并为其添加了相应的功能样式和视觉样式。在使用的时候,只需要定义好各级菜单的内容以及首级菜单的链接并调用dropMenu函数就可以使用了,如果需要,还可以自己添加一些富有特色的视觉样式。

    1. 在HTML中添加如下代码:

    1 <nav class="drop_menu">
    2     <ul></ul>
    3 </nav>

    并引入相应的css和js文件:

    1 <link rel="stylesheet" href="dropMenu.css">
    2 <script type="text/javascript" src="script/jquery-3.0.0.min.js"></script>    
    3 <script type="text/javascript" src="dropMenu.js"></script>

    2. dropMenu.css中的内容

     1 /*添加视觉样式*/
     2 .drop_menu {
     3     font:1em helvetica, arial, sans-serif;
     4 }
     5 .drop_menu a {
     6     color:#555;
     7     background-color:#eee;
     8     padding:.2em 1em;
     9     border-width:3px;
    10     border-color:transparent;
    11 }
    12 .drop_menu a:hover {
    13     color:#fff;
    14     background-color:#aaa;
    15 }
    16 .drop_menu a:active {
    17     background:#fff;
    18     color:#ccc;
    19 }
    20 .drop_menu li ul {width:9em;}
    21 .drop_menu li li a {
    22     border-right-style:none;
    23     border-top-style:solid;
    24 }
    25 /*添加功能样式*/
    26 .drop_menu * {
    27     margin:0; padding:0;
    28 }
    29 .drop_menu ul {float:left;}
    30 .drop_menu li {
    31     float:left;
    32     list-style-type:none;
    33     position:relative;
    34 }
    35 .drop_menu li a {
    36     display:block;
    37     border-right-style:solid;
    38     background-clip:padding-box;
    39     text-decoration:none;
    40 }
    41 .drop_menu li:last-child a {border-right-style:none;}
    42 .drop_menu li ul {
    43     display:none;
    44     position:absolute;
    45     left:0;
    46     top:100%;
    47 }
    48 .drop_menu li li {
    49     float:none;
    50 }
    51 
    52 .drop_menu li:hover > ul {
    53     display:block;
    54 }

    3. dropMenu.js中的内容

     1 $(document).ready(function(){
     2     var menuText = [
     3         ["第一级1", "第二级11", "第二级12"],
     4         ["第一级2", "第二级21", "第二级22", "第二级23"],
     5         ["第一级3", "第二级31", "第二级32", "第二级33", "第二级34"],
     6         ["第一级4"]
     7     ];
     8     var topItemLinks = ["https://www.baidu.com/", "https://www.tmall.com/", "http://www.sina.com.cn/", "https://www.baidu.com/"];
     9     dropMenu(menuText, topItemLinks);
    10 
    11 //封装函数
    12     function dropMenu(menuText, topItemLinks){
    13         if(menuText.length != topItemLinks.length){
    14             alert("警告:请保持首级菜单的数目与首级菜单链接的数目一致!");
    15             return;
    16         }
    17         for (var i = 0; i < menuText.length; i++) {
    18             var topItemLi = $("<li></li>");
    19             topItemLi.appendTo($(".drop_menu>ul"));
    20             $("<a></a>")
    21                 .attr("href", topItemLinks[i])
    22                 .html(menuText[i][0])
    23                 .appendTo(topItemLi);
    24             if(menuText[i].length > 1){
    25                 var topItemUl = $("<ul></ul>");
    26                 for(var j = 1; j < menuText[i].length; j++){
    27                     topItemUl.appendTo(topItemLi);
    28                     $("<li></li>")
    29                         .appendTo(topItemUl)
    30                         .append(
    31                             $("<a href='###'></a>")
    32                             .html(menuText[i][j])
    33                         );
    34                 }
    35             }
    36         }
    37     }
    38 });

    4. 效果截图

  • 相关阅读:
    简单实现vue列表点击某个高亮显示
    vue中子组件直接修改父组件prop属性bug
    Java基础——关于接口和抽象类的几道练习题
    Eclipse中导入外部jar包步骤
    Java基础——关于jar包的知识
    Java基础——关于访问权限的一道例题
    Java基础——抽象类和接口
    Java基础——多态
    Java基础——继承
    三个案例,解读静态代码块和构造代码块
  • 原文地址:https://www.cnblogs.com/shy-huiying/p/5662771.html
Copyright © 2011-2022 走看看