jquery 树形框 横_利用jQuery设计横/纵向菜单

在网页中,菜单扮演着“指路者”的角色。如何设计一个人性化的菜单呢,下面小编带着大家一起做。

效果图:

设计历程:

1.首先利用html中的

  • 标签进行嵌套,搭起一个整体的框架。如下图所示:

    Html代码:

    横纵向菜单
    • 菜单项1

      • 子菜单项11

      • 子菜单项12

    • 菜单项2

      • 子菜单项21

      • 子菜单项22

    • 菜单项3

      • 子菜单项31

      • 子菜单项32

    (这是展示的是纵向菜单的代码,横向代码亦是如此,只需更改一下class的名字,以便在设计样式时区别开。)

    2.上面的两幅图形成鲜明的对比,用户理所应当选择前者了,接下来我们就给框架“穿”件衣服。

    CSS代码:

    ul,li{

    /*清除ul和li前默认的小圆点*/

    list-style:none;

    }

    ul{

    /*清除子菜单的缩进值*/

    padding:0;

    margin:0;

    }

    .main,.hmain{

    /*  菜单项的背景是一小块图片平移重复构成的,看起来有立体感

    */  background-image:url(../image/title.gif);

    background-repeat:repeat-x;

    width:120px;

    }

    li{

    /*  设置背景颜色,菜单项的背景图片覆盖背景颜色

    */  background-color:#CCC;

    }

    a{

    /*取消所有链接的下划线*/

    text-decoration:none;

    /*  让a充满整个区域,鼠标点击的那行一直是手形

    */  display:block;

    display:inline-block;

    width:100px;

    padding-left:20px;

    padding-top:3px;

    padding-bottom:3px;

    }

    .main a,.hmain a{

    /*  设置菜单项的字体颜色

    */  color:white;

    /*在菜单项前添加向右指的图片

    */  background-image:url(../image/collapsed.gif);

    background-repeat:no-repeat;

    background-position:3px center;

    }

    .main li a,.hmain li a{

    /*  设置子菜单的字体颜色

    */  color:black;

    background-image:none;

    }

    .main ul,.hmain ul{

    /*  初始不显示子菜单项

    */  display:none;

    }

    .hmain{

    /*  横向菜单每个菜单项向左浮动,在一行显示

    */  float:left;

    margin-right:1px;

    }*/

    注:“main”—纵向   “hmain”—横向

    3.菜单的表面工作完成了,它不是摆在那里给人看的,需要和用户进行交互,实现一些动态效果。当我们点击菜单项时,首先鼠标箭头变为手形,点击后下面隐藏的子菜单项会显示出来,同时指向右的箭头变为指向下方。再点击菜单项时,子菜单项隐藏,同时更换箭头图片。

    JavaScript就是赋予网页生命力的大神,而jQuery则是一个兼容多浏览器的javascript库,有了它使得javascript写得更少,做得更多。引用了jquery库后,编写如下代码:

    javascript代码:

    $(document).ready(function() {

    //纵向菜单

    $(".main > a").click(function(){

    var ulNode=$(this).next("ul");

    ulNode.slideToggle();

    changeIcon($(this));

    });

    //横向菜单

    $(".hmain").hover(function(){

    $(this).children("ul").slideDown();

    changeIcon($(this).children("a"));

    },function(){

    $(this).children("ul").slideUp();

    changeIcon($(this).children("a"));

    });

    });

    /*修改主菜单的指示图标*/

    function changeIcon(mainNode){

    if(mainNode){

    if(mainNode.css("background-image").indexOf("collapsed.gif")>=0){

    mainNode.css("background-image","url('image/expanded.gif')");

    }else{

    mainNode.css("background-image","url('image/collapsed.gif')");

    }

    }

    }

    至此,两个菜单设计完成了,是不是很有成就感呢!

    纵观全局,html是躯体,css是衣服,js则是灵魂。三者的配合,构成了一个个鲜活灵动的网页。记得最初照着视频敲牛腩新闻发布系统的时候,觉得B/S开发就是杂七杂八的东西往一块儿拼凑。随着后来的“盲人摸象”,现在有了逐渐清晰的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要创建一个基于 jQuery树形菜单,可以按照以下步骤进行操作: 1. 首先,确保您已引入了 jQuery 库。可以从 jQuery 官方网站下载最新版本的 jQuery,并在 HTML 文件中引入它,例如: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 在 HTML 中创建一个容器元素,用于承载树形菜单的结构。例如: ```html <div id="tree-menu"></div> ``` 3. 使用 JavaScript/jQuery 编写代码来生成树形菜单的结构和行为。这里我们将使用递归函数来循环遍历菜单数据,并生成相应的 HTML 结构。以下是一个简单的示例: ```javascript // 菜单数据 var menuData = [ { label: '菜单项1', children: [ { label: '子菜单项1' }, { label: '子菜单项2' } ] }, { label: '菜单项2', children: [ { label: '子菜单项3' }, { label: '子菜单项4', children: [ { label: '子子菜单项1' }, { label: '子子菜单项2' } ] } ] } ]; // 递归生成树形菜单的函数 function generateTreeMenu(parentElement, data) { var ul = $('<ul>'); // 创建一个 ul 元素 data.forEach(function(item) { var li = $('<li>').text(item.label); // 创建一个 li 元素,并设置文本内容 if (item.children && item.children.length > 0) { generateTreeMenu(li, item.children); // 如果有子菜单,则递归生成子菜单 } ul.append(li); // 将 li 添加到 ul 中 }); parentElement.append(ul); // 将 ul 添加到父元素中 } // 调用函数生成树形菜单 generateTreeMenu($('#tree-menu'), menuData); ``` 以上代码会根据 `menuData` 数据生成一个嵌套列表结构,形成树形菜单。 您可以根据自己的需求修改数据和样式,使其适应您的项目。希望对您有帮助!如果您有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值