精华内容
下载资源
问答
  • 多级菜单web
    2021-06-25 09:55:11

    oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 具体如图3所示。 图3 Java下载页面 安装完成后记录Java安装目录,例如:“C:\Program Files (x86)\java\jdk1

    容器应用是运行在边缘设备上的业务应用,可以通过FusionDirector部署到批量边缘设备上。 创建容器应用 创建镜像文件 在FusionDirector界面上方菜单栏选择“菜单 > 配置 > 配置部署 > 容器应用部署 > 镜像文件”,进入“镜像文件”管理界面。 单击“创建镜像文件”按钮,进入创建镜像文件页面。

    容器应用是运行在边缘设备上的业务应用,可以通过FusionDirector部署到批量边缘设备上。 创建容器应用 创建镜像文件 在FusionDirector界面上方菜单栏选择“菜单 > 配置 > 配置部署 > 容器应用部署 > 镜像文件”,进入“镜像文件”管理界面。 单击“创建镜像文件”按钮,进入创建镜像文件页面。

    oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 具体如图3所示。 图3 Java下载页面 安装完成后记录Java安装目录,例如:“C:\Program Files (x86)\java\jdk1

    目前只有“图像分类”、“物体检测”和“图像分割”类型的数据集支持自动分组功能。 启动自动分组任务 登录ModelArts管理控制台,在左侧菜单栏中选择“数据管理>数据集”,进入“数据集”管理页面。 在数据集列表中,选择“物体检测”或“图像分类”类型的数据集,单击数据集名称进入“数据集概览页”。

    ”,进入管理台,单击右侧图标,可以进行数据调试。 方式二:进入App视图,在左侧菜单栏下方单击。 方式三:直接浏览器中输入“https://AppCube域名/studio/console.html”,进入控制台页面进行数据调试。 图1 调试界面 界面介绍如下: 最上面区域1:是

    系统配置 基础配置 设置故障识别及根因定位服务的模型入参和自动挖掘周期。 在故障识别及根因定位服务首页单击项目的卡片图。 在左侧菜单栏中,单击“系统配置”。 进入“参数配置”界面,如图1所示。参数说明如表1所示。 图1 参数配置 表1 参数配置 参数 说明 回放倍数 使用告警文件

    进入创建算法页面 设置算法基本信息 设置创建方式 定义超参 配置输入输出数据 定义训练约束 进入创建算法页面 登录ModelArts管理控制台,单击左侧菜单栏的“算法管理”。 在“我的算法”管理页面,单击“创建”,进入“创建算法”页面。 设置算法基本信息 基本信息包含“名称”和“描述”。目前算法管理为公测功能,免费试用。

    ,实现集中式的租户和业务管理。 图形化的操作界面 FusionInsight Manager实现全图形化的多租户管理界面:通过树形结构实现多级租户的管理和操作,将当前租户的基本信息和资源配额集成在一个界面中,方便运维和管理,如图1所示。 图1 多租户管理 层级式的租户管理 FusionInsight

    BO中的组件表 URLMap 存放Custom API信息 自定义:可自定义导出具体的“目标对象”,可多选。 当上一步“数据导出”方式选择“模板”时,可新建或者选择模板进行导出,目标对象可多选。 当对象勾选的是多个时,导出条件过滤字段为公共字段。 当数据导出成功之后,您将收到一封邮件,提

    组装“处理工单”对话框 “维修工程师处理工单”功能包含两个页面,1个是工程师查看待处理工单列表页面,1个是处理工单对话框。 “处理工单”对话框是一个手机端的Html5页面,负责指定下一环节的工单状态,是“待处理工单列表”页面中引用的对话框。 按照工程师在对话框中选定下一步流程状态,如图1所示。 图1

    ”,进入管理台,单击右侧图标,可以进行数据调试。 方式二:进入App视图,在左侧菜单栏下方单击。 方式三:直接浏览器中输入“https://AppCube域名/studio/console.html”,进入控制台页面进行数据调试。 控制台页面如图1所示,界面分为多个区域,展示不同的内容。

    使用OBS上传文件 操作场景 网站后台对于上传的文件大小和格式存在如下限制,在实际使用中常常无法满足需求(比如上传大于1MB的图片,或者html格式的文件),而使用OBS上传文件恰好解决了此问题。 图片:jpg(1MB以内)、jpeg(1MB以内)、gif(1MB以内)、png(1MB以内)、ico(100KB以内)

    理模式。 如果用户希望使用FusionDirector管理边缘设备,使用IEF为管理的边缘设备部署相关业务时可使用该模式。 操作步骤 在主菜单中选择“维护 > 网管注册”。 图1 配置网管注册 选择网管模式。 当网管模式在“点对点web管理”和“FusionDirector管理”之间互相切换时,对于20

    cn-north-4.huaweicloud.com/app/portal.html#/a/000f000000h1j4x4zhBo/Tab/001g000000h1j5Jcy8nY”,则该值配置为“/app/portal.html#/a/000f000000h1j4x4zhBo/Tab/00

    更多相关内容
  • 利用js或者jquery最快速实现导航条的多级菜单效果。 我这个代码用的是jquery1.9.1,ie8以下的兼容有待考虑,主要是代码的简介性,write less,do more. <!DOCTYPE html> <html lang=en> <meta charset=...
  • html js树形图,美观大方,界面友好,可配置,也可自己重新调整样式,美观的菜单列表,多级列表,三级及三级以上列表,可自行配置
  • 主要介绍了Shell实现多级菜单系统安装维护脚本实例分享,本文脚本用多级菜单实现管理WEB服务器、Mysql服务器、Nginx服器等,需要的朋友可以参考下
  • 内容索引:脚本资源,Ajax/JavaScript, JavaScript读取XML节点生成多级的网站导航菜单,鼠标放到中心主菜单,它就会依次展开每一级菜单,本菜单的重点实际上并不是让你使用这款菜单,而是向大家展示如何使Js认识XML...
  • Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。本文重点给大家介绍bootstrap实现多级下拉菜单功能的实例代码,感兴趣的朋友一起学习吧
  • bootstrap-treeview 实现的web后台管理常用到的左侧 多级(无限级)分类菜单-idea springboot mybatis mysql技术实现,完整的一个小实例,有效果图,数据库表字段,下载即可运行。
  • 表示该菜单项为根菜单项,否则表示他为某菜单项的子菜单,比如id为2的项,他的父节点是1.则他是张三的子菜单,而张三是根菜单,position只用于根菜单项,用于控制显示的顺序。 往网页里拖入一个menu控件,然后添加...
  • 横向多级的下拉菜单

    2018-12-27 11:31:41
    使用CSS写的下拉菜单,鼠标移动上去显示其子菜单。中间有透明间隔
  • STM32简易多级菜单(数组查表法)

    千次阅读 多人点赞 2022-05-08 13:18:07
    单片机开发中,有时会用到屏幕来显示内容,当需要逐级显示内容时,就需要使用多级菜单的形式了。 1 多级菜单 多级菜单的实现,大体分为两种设计思路: 通过双向链表实现 通过数组查表实现 总体思路都是把菜单的...

    单片机开发中,有时会用到屏幕来显示内容,当需要逐级显示内容时,就需要使用多级菜单的形式了。

    1 多级菜单

    多级菜单的实现,大体分为两种设计思路:

    • 通过双向链表实现
    • 通过数组查表实现

    总体思路都是把菜单的各个界面联系起来,可以从上级菜单跳到下级菜单,也可从下级菜单返回上级菜单。

    数组查表的方式比较简单,易于理解,本篇就来使用数组查表发在STM32上实现多级菜单的显示。

    2 代码实现

    2.1 数组查表

    首先需要定义一个结构体

    typedef struct
    {
    	uchar current;
    	uchar up;//向上翻索引号
    	uchar down;//向下翻索引号
    	uchar enter;//确认索引号
    	void (*current_operation)();
    } key_table;
    
    • current:当前页面的索引号
    • up:按下“向上翻“按钮后要跳转到的页面索引号
    • down:按下“向下翻“按钮后要跳转到的页面索引号
    • enter:按下“确认“按钮后要跳转到的页面索引号
    • current_operation:当前页面的索引号要执行的显示函数,这是一个函数指针

    注意:对于菜单显示的操作,用到了3个按键,分别是向下、向下和确认,如果单片机上的IO资源较为紧张,还可以把“向上翻”按钮省去,只通过“向下翻”按钮来实现循环访问,对应的结构体也可以去掉该成员。

    然后定义一个表,用来定义各个页面间如何跳转

    key_table table[30]=
    {
    	//第0层
    	{0,0,0,1,(*fun_0)},
    	
        //第1层
    	{1,4,2, 5,(*fun_a1)},
    	{2,1,3, 9,(*fun_b1)},
    	{3,2,4,13,(*fun_c1)},		
    	{4,3,1, 0,(*fun_d1)},
    	
        //第2层
    	{5,8,6,17,(*fun_a21)},					
    	{6,5,7,18,(*fun_a22)},
    	{7,6,8,19,(*fun_a23)},						                	
    	{8,7,5, 1,(*fun_a24)},
    	
    	{ 9,12,10,20,(*fun_b21)},					
    	{10, 9,11,21,(*fun_b22)},
    	{11,10,12,22,(*fun_b23)},						                	
    	{12,11, 9, 2,(*fun_b24)},
    	
    	{13,16,14,23,(*fun_c21)},					
    	{14,13,15,24,(*fun_c22)},				                	
    	{15,14,16,25,(*fun_c23)},				                	
    	{16,15,13, 3,(*fun_c24)},
    	
        //第3层
    	{17,17,17,5,(*fun_a31)},			                	
    	{18,18,18,6,(*fun_a32)},		                	
    	{19,19,19,7,(*fun_a33)},
    	
    	{20,20,20, 9,(*fun_b31)},				                	
    	{21,21,21,10,(*fun_b32)},			                	
    	{22,22,22,11,(*fun_b33)},
    	
    	{23,23,23,13,(*fun_c31)},			                	
    	{24,24,24,14,(*fun_c32)},			                	
    	{25,25,25,15,(*fun_c33)},								
    };
    

    这里解释一下该表是如何工作的:

    • 此表,表示了4级菜单的显示关系(注意第0层其实只是一个欢迎界面)
    • 第一层菜单,只有4个选项,因此这里只列了4行(注意最后一个选项用作返回上一级,无实际内容含义)
    • 第二层菜单,就是对第一层菜单中的3个实际的选项进行进一步的介绍,每种介绍又有4个子项(注意最后一个选项也是用作返回上一级,无实际内容含义),因此,这里的第二层菜单列了3x4=12行
    • 第三层菜单,又是对第二层菜单中的子项进行进一步的介绍(3个分类,每类有3个子项),所以第三层菜单列了9行
    • 注意数组中每一行的第1个数组,是索引号,先列举一个实际的例子进行分析:

    上图就是一个实际的4级菜单要显示的内容,每个条目前,标记了索引号(0~25),即对应数组在定义的索引号。

    比如数组关于第0层和第1层的定义:

    //第0层
    {0,0,0,1,(*fun_0)},
    
    //第1层
    {1,4,2, 5,(*fun_a1)},
    {2,1,3, 9,(*fun_b1)},
    {3,2,4,13,(*fun_c1)},		
    {4,3,1, 0,(*fun_d1)},
    
    • 先看第一行:索引是0,显示欢迎界面;后面的两个0表示此时按“上翻”和“下翻”无效,继续显示欢迎界面;再后面的1表示按下“确认”按钮后,跳转到索引1处(即显示第1级目录,且指向第1级的第1个子项);最后是此索引要显示的具体内容,fun_0就是控制屏幕显示欢迎界面
    • 再看第二行:索引是1,显示第1级目录,且指向第1级的第1个子项(天气);后面的4表示此时按“上翻”跳转到索引4,即显示第1级目录,且指向第1级的第4个子项(Return);再后面的2表示此时按“下翻”跳转到索引2,即显示第1级目录,且指向第1级的第2个子项(音乐);再后面的5表示按下“确认”按钮后,跳转到索引5处(即显示第2级目录,且指向第2级的第1个子项-杭州);最后是此索引要显示的具体内容,fun_a1就是控制屏幕显示第1级目录,且指向第1级的第1个子项(天气)
    • 其它行的含义与之类似

    通过分析,不难发现,这些数组在空间上的关系:

    对于菜单的最底层,因为没有上翻和下翻的功能需求,因此每行的前3个数字都是当前的索引号:

    //第3层
    {17,17,17,5,(*fun_a31)},			                	
    {18,18,18,6,(*fun_a32)},		                	
    {19,19,19,7,(*fun_a33)},
    
    {20,20,20, 9,(*fun_b31)},				                	
    {21,21,21,10,(*fun_b32)},			                	
    {22,22,22,11,(*fun_b33)},
    
    {23,23,23,13,(*fun_c31)},			                	
    {24,24,24,14,(*fun_c32)},			                	
    {25,25,25,15,(*fun_c33)},	
    

    2.2 具体的显示函数

    对于函数要显示的具体内容,根据自己的实现需要显示即可。

    这里我使用的是OLED屏幕,借助U8g2图形库进行内容显示,以下是部分显示示例:

    /*********第1层***********/
    void fun_a1()   
    {	
    	u8g2_DrawStr(&u8g2,0,16,">");
    	u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    	u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    	u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    	u8g2_DrawStr(&u8g2,16,64,"<--");																					
    }
    
    void fun_b1()   
    {	
    	u8g2_DrawStr(&u8g2,0,32,">");
    	u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    	u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    	u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    	u8g2_DrawStr(&u8g2,16,64,"<--");																						
    }
    
    void fun_c1()     
    {	
    	u8g2_DrawStr(&u8g2,0,48,">");
    	u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    	u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    	u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    	u8g2_DrawStr(&u8g2,16,64,"<--");																					
    }
    
    void fun_d1()     
    {	
    	u8g2_DrawStr(&u8g2,0,64,">");
    	u8g2_DrawStr(&u8g2,16,16,"[1]Weather");
    	u8g2_DrawStr(&u8g2,16,32,"[2]Music");
    	u8g2_DrawStr(&u8g2,16,48,"[3]Device Info");
    	u8g2_DrawStr(&u8g2,16,64,"<--");																							
    }
    
    /*********第2层***********/
    void fun_a21()     
    {	
    	u8g2_DrawStr(&u8g2,0,16,">");
    	u8g2_DrawStr(&u8g2,16,16,"* HangZhou");
    	u8g2_DrawStr(&u8g2,16,32,"* BeiJing");
    	u8g2_DrawStr(&u8g2,16,48,"* ShangHai");
    	u8g2_DrawStr(&u8g2,16,64,"<--");																						
    }
    //省略...
    

    2.3 按键切换页面

    页面的切换,这里里简单的按钮轮询为例,比如初始显示欢迎界面的状态下,按下不同按键后,通过数组查表,确定要跳转到的索引号,然后根据索引号,通过函数指针执行索引号对应的显示函数,即实现了一次页面切换。

    然后,就是在新的页面状态,收到下一个按钮指令,再切换到下一个显示状态。

    void (*current_operation_index)(); //定义一个函数指针
    
    //...
    while(1)
    {
        if((KEY1==0)||(KEY2==0)||(KEY3==0))
        {
            delay_ms(10);//消抖
            if(KEY1==0)
            {
                func_index = table[func_index].up;    //向上翻
                while(!KEY1);//松手检测
            }
            if(KEY2==0)
            {
                func_index = table[func_index].down;    //向下翻
                while(!KEY2);
            }
            if(KEY3==0)
            {
                func_index = table[func_index].enter;    //确认
                while(!KEY3);
            }
        }	
    
        if (func_index != last_index)
        {
            current_operation_index = table[func_index].current_operation;
    
            u8g2_ClearBuffer(&u8g2); 
            (*current_operation_index)();//执行当前操作函数
            u8g2_SendBuffer(&u8g2);
    
            last_index = func_index;
        }
    }
    

    3 演示

    测试效果如下:
    https://www.bilibili.com/video/BV1r5411R7eA?share_source=copy_web

    4 总结

    本篇介绍了一种简易的多级菜单的显示方法,本质是通过数组查表,实现各级菜单的各个页面(状态)的切换(跳转),并在STM32上编程实现,通过OLED屏幕,以及借助U8g2图形库,测试了多级菜单的显示功能。

    展开全文
  • 内容索引:脚本资源,Ajax/JavaScript,折叠菜单 FreeStyle Menus 是基于JavaScript+CSS技术两者结合打造的多级折叠菜单插件,风格类似OFFICE XP,效果展示如上所示,本插件没有用到过多的图片,因此不会影响你的网页...
  • 内容索引:脚本资源,jQuery,jGlideMenu,jQuery插件,折叠菜单 jGlideMenu 是一款基于jQuery库的滚动型多级展开菜单插件,它不但可以像推拉门一样翻页,而且每一页的菜单还可展开多级,这样你可认为当推拉的时候它是某...
  • 简单多级树形菜单

    2018-05-19 14:10:50
    使用 css、jquery 、fontawesome字体图标写的多级简单树形菜单
  • 内容索引:脚本资源,jQuery,伸展菜单,左侧菜单 jQuery 停靠在网页左侧的可伸展、隐藏的多级菜单,从功能上来说,酷似一个竖向排列的滑动门,最右侧的为母菜单,当鼠标放上的时候,像Flash一样滑出对应的子菜单项,...
  • css多级下拉菜单

    2017-05-23 13:33:19
    很好看的多级下拉菜单
  • 内容索引:脚本资源,jQuery,NotesForMenu,折叠菜单 jQuery NotesForMenu 是一款简洁的动画折叠型多级菜单,没有怎么美化,介绍了一种使用jQuery制作可折叠、可展开的多级菜单的方法,示例文档含有多个菜单实例,帮助...
  • 是一个Web组件,提供应用程序菜单功能,是一部分。 < vaadin> 安装 安装vaadin-menu-bar : npm i @vaadin/vaadin-menu-bar --save 安装后,将其导入您的应用程序: import '@vaadin/vaadin-menu-bar/vaadin-...
  • 系列传送门在web开发中,特别是后台管理工具的开发,经常用到纵向的多级菜单。但是常用的Bootstrap仅能支持到2级菜单,对于3级及3级以上的菜单的显示,却无能为力。下面我将使用另一个jQuery的菜单显示插件——...

    系列传送门

    在web开发中,特别是后台管理工具的开发,经常用到纵向的多级菜单。

    但是常用的Bootstrap仅能支持到2级菜单,对于3级及3级以上的菜单的显示,却无能为力。

    下面我将使用另一个jQuery的菜单显示插件——metisMenu,结合项目,实现动态多级菜单显示。

    f79de1c602b6

    image.png

    用到的技术:

    jQuery

    jQuery-metisMenu插件 官网地址:http://mm.onokumus.com/index.html

    Beetl模板引擎 官网地址:http://ibeetl.com/

    Maven

    Spring-boot或Nutz框架(本文以Spring-boot举例)

    用到的开发工具:

    intellij IDEA

    开始

    新建maven项目

    f79de1c602b6

    image.png

    f79de1c602b6

    image.png

    剩下步骤直接next即可。

    创建java目录,并设置为Sources Root:

    f79de1c602b6

    image.png

    创建demo包名和模板目录(存放beetl模板),最后项目目录结构如下:

    f79de1c602b6

    image.png

    添加spring-boot和beetl相关依赖

    pom.xml:

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    4.0.0

    BeetlMetisMenu

    BeetlMetisMenu

    war

    1.0-SNAPSHOT

    BeetlMetisMenu Maven Webapp

    http://maven.apache.org

    org.springframework.boot

    spring-boot-starter-parent

    1.5.9.RELEASE

    junit

    junit

    3.8.1

    test

    org.springframework.boot

    spring-boot-starter-thymeleaf

    org.springframework.boot

    spring-boot-devtools

    com.ibeetl

    beetl-framework-starter

    1.1.22.RELEASE

    BeetlMetisMenu

    org.springframework.boot

    spring-boot-maven-plugin

    创建测试用的html:

    在resources/templates目录下创建demo.html

    Beetl_MetisMenu动态多级菜单

    Hello World

    创建spring-boot的启动器

    在包名demo下创建Application.java:

    package demo;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication

    public class Application {

    public static void main(String[] args) {

    SpringApplication.run(Application.class, args);

    }

    }

    创建Controller

    在包名demo下创建DemoController.java:

    package demo;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    @Controller

    public class DemoController {

    @RequestMapping("/demo")

    public String demo() {

    return "demo";

    }

    }

    启动项目,测试web环境配置是否成功

    f79de1c602b6

    image.png

    启动后,在浏览器中输入http://localhost:8080/demo,查看是否页面正常显示 Hello World。如果显示成功,恭喜你,第一关闯关成功! ^_^

    添加beetl相关配置

    重命名demo.html为demo.btl,并修改文件如下:

    1、修改Hello World为Hello ${name}

    Beetl_MetisMenu动态多级菜单

    Hello ${name}

    修改DemoController.javar如下:

    1、给页面返回一个name参数

    2、修改返回的页面为demo.btl模板

    package demo;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    @Controller

    public class DemoController {

    @RequestMapping("/demo")

    public String demo(Model model) {

    model.addAttribute("name", "world");

    return "demo.btl";

    }

    }

    启动项目,测试web环境配置是否成功。

    启动后,在浏览器中输入http://localhost:8080/demo,查看是否页面正常显示 Hello World。如果显示成功,恭喜你,第二关闯关成功! ^_^

    下面将进入我们的主题,创建多级菜单

    先做一个静态的看看效果。

    修改demo.btl文件:

    Beetl_MetisMenu动态多级菜单

    Hello ${name}

    // 此处一定记得初始化metisMenu

    $(function () {

    $('#menu1').metisMenu();

    });

    启动项目,在浏览器中输入http://localhost:8080/demo,查看是否页面正常显示 如下:

    f79de1c602b6

    image.png

    如果显示成功,恭喜你,第三关闯关成功! ^_^

    下面开始创建动态菜单

    创建菜单对象Menu.java

    package demo;

    import java.util.List;

    /**

    * 菜单对象

    */

    public class Menu {

    // 菜单名

    private String name;

    // 拥有的子菜单列表

    private List

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public List

    return children;

    }

    public void setChildren(List

    this.children = children;

    }

    }

    修改DemoController.java:

    1、创建菜单树

    2、把菜单树传给页面

    package demo;

    import org.springframework.stereotype.Controller;

    import org.springframework.ui.Model;

    import org.springframework.web.bind.annotation.RequestMapping;

    import java.util.ArrayList;

    import java.util.List;

    @Controller

    public class DemoController {

    @RequestMapping("/demo")

    public String demo(Model model) {

    // 创建菜单树

    List

    // 传递给页面

    model.addAttribute("menuTree", menuTree);

    return "demo.btl";

    }

    /**

    * 创建菜单树

    *

    * @return List

    */

    private List

    // 创建根菜单列表

    List

    for (Menu rootMenu : rootMenuList) {

    // rootMenu是根菜单

    // 给rootMenu创建一级菜单

    rootMenu.setChildren(createMenuList(rootMenu, 2));

    for (Menu childMenu : rootMenu.getChildren()) {

    // childMenu是一级菜单

    // 给childMenu创建子菜单(二级菜单)

    childMenu.setChildren(createMenuList(childMenu, 2));

    for (Menu childOfChildMenu : childMenu.getChildren()) {

    // childOfChildMenu是二级菜单

    // 给childOfChildMenu创建子菜单(三级菜单)

    childOfChildMenu.setChildren(createMenuList(childOfChildMenu, 2));

    }

    }

    }

    // 此时rootMenuList是一个树状结构

    return rootMenuList;

    }

    /**

    * 创建指定菜单的子菜单列表

    *

    * @param menu Menu 指定的菜单,如果为空,则默认创建的是一级菜单

    * @param count int 指定菜单的子菜单数量

    * @return List

    */

    private List

    List

    for (int i = 1; i <= count; i++) {

    if (menu == null) {

    // 创建一级菜单

    Menu rootMenu = new Menu();

    rootMenu.setName("Menu " + i);

    menuList.add(rootMenu);

    } else {

    // 创建menu的子菜单

    Menu childMenu = new Menu();

    childMenu.setName(menu.getName() + "." + i);

    menuList.add(childMenu);

    }

    }

    return menuList;

    }

    }

    创建根菜单模板rootMenu.btl:

    创建子级菜单模板subMenu.btl:

    修改之前的demo模板demo.btl:

    1、把之前写的静态菜单的部分替换成用菜单模板显示

    Beetl_MetisMenu动态多级菜单

    $(function () {

    $('#menu1').metisMenu();

    });

    启动项目,在浏览器中输入http://localhost:8080/demo,查看是否页面正常显示 如下:

    f79de1c602b6

    image.png

    如果显示成功,恭喜你,全部关卡闯关成功,取得真经! ^_^

    展开全文
  • 这是一个相当炫的功能,让网页看起来像桌面程序,如window的开始菜单。实现原理基本和纯CSS相册差不多,但要注意的事项比较多,让我们一步步来吧。 先来一个非常简单的一级菜单与悬停效果。 <ul id="menu"> &...

    这是一个相当炫的功能,让网页看起来像桌面程序,如window的开始菜单。实现原理基本和纯CSS相册差不多,但要注意的事项比较多,让我们一步步来吧。

    先来一个非常简单的一级菜单与悬停效果。

    <ul id="menu">
      <li>
        <a href="http://www.cnblogs.com/rubylouvre/">
          菜单一<!--小图--><span><!--大图--></span>
        </a>
      </li>
      <li>
        <a href="http://www.cnblogs.com/rubylouvre/">
          菜单二<!--小图--><span><!--大图--></span>
        </a>
      </li>
      <li>
        <a href="http://www.cnblogs.com/rubylouvre/">
          菜单三<!--小图--><span><!--大图--></span>
        </a>
      </li>
      <li class="last">
        <a href="http://www.cnblogs.com/rubylouvre/">
          菜单四<!--小图--><span><!--大图--></span>
        </a>
      </li>
    </ul>
    
    

    结构很熟悉吧,就是把原来放图片的地方换成文字而已。我还特意标出来了。接着下来的表现层代码非常简单。

    * {
      margin:0;
      padding:0;
    }
    .menu {
      font-size:12px;
    }
    .menu li {/*水平菜单*/
      float:left;
      list-style:none;
    }
    .menu a {
      display:block;
      position:relative;
      height:32px;
      width:100px;
      line-height:32px;
      background:#a9ea00;
      color:#ff8040;
      text-decoration:none;
      text-align:center;
    }
    .menu a:hover {
      background:#369;
      color:#fff;
    }
    .menu li span {
      display:none;
      position:absolute;
      left:0;
      top:32px;
      width:200px;
      height:150px;
      background:#B9D6FF;
    }
    .menu a:hover span {
      display:block;
    }
    

    这里有两个值得注意的地方。我们先说第一个。子菜单(span元素)的top应该能使其顶部停留在a元素的范围内,如果包含块是li元素,同理。当span的top值大于32px,如40px,我们就无法把鼠标移到span元素上。因为离开了a:hover的作用范围,span元素又重新隐藏。

    对web前端这门技术感兴趣的小伙伴可以加入到我们的学习圈来,正因为我不是211,985,只是个普通的本科生,英语不是特别好,数学不是特别好。所以我选择了前端。工作第六个年头了,我庆幸自己选择了这条路。767-273-102 秋裙。在鹅厂做过,跟着创业头子混过。想把自己的技术分享给大家,如果你还在迷茫,也希望能进我一些绵薄之力,帮助到你。都是一群有梦想的人,我们可能在不同的城市,但我们会一起结伴同行前端前端前端

    .menu li span {
      display:none;
      position:absolute;
      left:0;
      top:40px;/*★★修改这里★★*/
      width:200px;
      height:150px;
      background:#B9D6FF;
    }
    

    第二个问题是IE6特有的,就是子菜单在对应的包含块mouseout后仍不消失的问题。hover伪类相当于moverover与moverout。我们在可以在mouseover给它的子孙元素认定一种样式,mouseout时认定另一种。换言之,display现在在IE6无法切换(img元素除外)。解决方法用visibility 代替display。

    好了,现在我们真正做二级菜单,把有关span的CSS全删掉,并在结构层原span的位置改为如下代码:

    <ul>
      <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_11</a></li>
      <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_12</a></li>
    </ul>
    

    我们在各游览器看一下,感觉非常乏力。IE6与Opera10的二级菜单项是垂直的,但我们并没有清除浮动啊?firefox3.5与chrome与safari4的二级菜单项是水平分布了,但上面好像多出一个菜单项……IE8同学这次反而是表现得最好的。我没有装IE7,所以一向忽略它。

    我们重新设置一下样式,如把包含块改设在li元素上,让二级菜单项呈垂直显示。

    * {
      margin:0;
      padding:0;
    }
    .menu {
      font-size:12px;
    }
    .menu li {/*水平菜单*/
      float:left;
      list-style:none;
      position:relative;/*把包含块移动li元素*/
    }
    .menu a {
      display:block;
      /*position:relative;发现放在a元素中,
      在标准游览器中惨不忍睹,
      和纯CSS相册3的第一个运行框在chrome中遇到的bug一样*/
      height:32px;
      width:100px;
      line-height:32px;
      background:#a9ea00;
      color:#ff8040;
      text-decoration:none;
      text-align:center;
    }
    .menu a:hover {
      background:#369;
      color:#fff;
    }
    /*新增的二级菜单部分*/
    .menu ul ul {
      visibility:hidden;/*开始时是隐藏的*/
      position:absolute;
      left:0px;
      top:32px;
    }
    .menu ul a:hover ul{
      visibility:visible;
    }
    .menu ul ul li {
      clear:both;/*垂直显示*/
      text-align:left;
    }
    
    

    发现二级菜单在firefox与safari与chrome中没有反应,弹不出来(这三个浏览器的CSS部分互相抄袭严重啊)。opera10表现得最好,IE8其次。不过,标准浏览器的所有元素都支持hover伪类,不像IE6,非带href的a元素不可。我们改写部分CSS代码:

    .menu ul li:hover ul,/*非IE6*/
    .menu ul a:hover ul{/*IE6*/
      visibility:visible;
    }
    

    二级菜单能弹出来了,但那个神秘的li元素也现形了。我用双重浮动的收缩包围(shrink-wrapping)现象都无法消除这个神秘的li元素。参考外国的代码,方法是,把整个子菜单放到a元素的外面,然后用li:hover控制样式的切换。于是结构层改写如下:

    <div class="menu">
      <ul>
        <li>
          <a href="http://www.cnblogs.com/rubylouvre/">菜单一 </a>
          <ul>
            <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_11</a></li>
            <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_12</a></li>
          </ul>
        </li>
        <li>
          <a href="http://www.cnblogs.com/rubylouvre/">菜单二</a>
          <ul>
            <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_21</a></li>
            <li><a href="http://www.cnblogs.com/rubylouvre/">二级菜单_22</a></li>
          </ul>
        </li>
        <li>
        //***************略************
        </li>
        <li>
        //***************略************
        </li>
      </ul>
    </div>
    
    展开全文
  • 多级 菜单 多级 菜单

    2010-02-05 17:24:29
    多级菜单! 很值得下载看看!资源免费,大家分享!!
  • 将介绍如何用AngularJS构建一个强大的web前端系统。...1.静态多级菜单实现 2.动态多级菜单实现 1. 静态多级菜单实现 要实现多级菜单,我们要分两步走,第一步就是把静态菜单的功能实现,通过纯静态的HTML代码
  • 它仿大众点评,美团等的多级下拉列表菜单。代码干净,可复用性好,希望对大家有所帮助。【实例截图】【核心代码】ExpandTabView└── ExpandTabView├── AndroidManifest.xml├── bin│ ├── AndroidManifest...
  • Java实现多级菜单编写

    千次阅读 2021-01-31 20:13:08
    第一个任务是多级菜单的编写,对于大多数Java开发来讲,这都是一个再平常不过的功能了,由于原来业务性质原因,并没有做过,为此自己也通过查阅博客,完成了该功能,慢慢进步学习。记录一下,方便日后查阅,如果有...
  • -- 创建菜单表 drop database if exists `test`; create database `test`; use `test`; drop table if exists t_menu; create table t_menu( `id` int NOT NULL AUTO_INCREMENT comment '菜单ID', `name` ...
  • 内容索引:脚本资源,jQuery,展开菜单,DropdownMenu,Js折叠菜单 DropdownMenu JS多级展开菜单代码,鼠标放到主菜单后,会依次展开二级菜单,最多支持三级,满足大部分网站的使用,本菜单没有使用jQuery等类库,完全...
  • 内容索引:脚本资源,Ajax/JavaScript,仿XP,右键菜单 JavaScript+CSS仿windows xp风格的右键多级联动菜单,可自定义样式和触发程序,兼容IE/火狐、chrome、safari等众多浏览器,做的风格还挺像,鼠标在方框区域右键...
  • CSS网页布局入门教程14:纵向下拉及多级弹出式菜单

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,716
精华内容 1,886
关键字:

多级菜单web