LayUi之选项卡的详解(附源码讲解)

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于LayUi的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.选项卡是什么

二.选项卡在什么时候使用(常见使用场景) 

三.怎么完成点击指定菜单项显示对应的选项卡内容(思路)

效果展示

思路

表结构

dao

jsp界面

js


其中还是有用到自定义mvc框架,不懂的小伙伴可以点击下方链接查看
自定义MVC框架【上篇】http://t.csdn.cn/giVlE

自定义MVC框架【中篇】--框架实现http://t.csdn.cn/pzCMx
自定义MVC框架【下篇】--运用框架完成增删改查http://t.csdn.cn/RHgke

一.选项卡是什么

  • 选项卡(Tabs)是一种用户界面组件,用于在一个窗口或界面中显示多个相关内容或功能,并允许用户在这些内容或功能之间进行切换。每个选项卡通常代表一个独立的页面或功能模块,并且只有一个选项卡处于活动状态,其内容将显示在界面上
  • 选项卡通常以水平或垂直的方式排列在一个导航栏或标签栏上,在点击不同的选项卡时,界面会切换显示对应选项卡的内容。选项卡的标签通常显示简短的标题或图标,以便用户能够理解不同选项卡的含义。通过选项卡,用户可以轻松地访问和浏览多个相关内容或功能,并以直观的方式对界面进行组织和导航
  • 选项卡通常用于网页浏览器中的标签页,应用程序中的不同视图或功能模块,以及其他各种软件界面中。它们提供了一种方便的方式来组织和管理复杂的界面,使用户能够快速访问所需的内容,提高用户体验和界面的可用性

二.选项卡在什么时候使用(常见使用场景) 

  • 1. 产品详情页
    • 一个电子商务网站的产品详情页常常使用选项卡来组织不同类型的信息,例如商品描述、规格、用户评价、相关推荐等。用户可以通过点击选项卡来切换并查看不同类型的信息,提供更好的信息展示和用户体验
  • 2. 应用程序设置:
    • 许多应用程序拥有复杂的设置选项,为了使界面更加清晰和易于导航,通常会使用选项卡来分类和组织不同的设置。例如,一个音乐播放器的设置界面可以有选项卡包括音质设置、播放列表、界面主题等,用户可以轻松切换选项卡以修改所需的设置
  • 3. 新闻网站:
    • 新闻类网站通常具有多个不同的新闻类别,为了让用户方便地浏览不同类别的新闻,可以使用选项卡来展示每个类别的新闻。用户可以通过点击选项卡快速切换到所需的新闻类别,例如体育、科技、娱乐等
  • 4. 多语言支持:
    • 当一个网站或应用程序需要提供多个语言版本时,可以使用选项卡来切换不同的语言。每个选项卡代表一个语言,用户可以通过选择不同的选项卡来切换到所需的语言界面,便于在不同语言之间进行切换和查看内容
  • 5. 多步骤操作:
    • 某些应用程序或网站可能需要用户完成多个步骤来执行特定任务,例如表单填写、注册流程等。为了引导用户逐步完成操作并减少界面复杂度,可以使用选项卡来显示每个步骤,并引导用户在不同的选项卡之间导航

这些场景和案例说明展示了选项卡在不同应用领域的灵活应用,它们可以提供更好的界面组织、内容展示和用户导航体验。选项卡的使用有助于简化界面结构,提高用户交互效果,并增强用户对内容的可访问性

三.怎么完成点击指定菜单项显示对应的选项卡内容(思路)

效果展示

因为iframe中的路径我没有填写,所以点击出来的都是404,后期会继续优化调整!!

思路

1.先从官网将对应的组件块复制过来

2.拷贝到自己的项目中,再将其由静态的效果变成动态的效果(数据交互)

3.完成所需要的效果

       将选项卡的名字变成我们自己所点击的实际的名字(eg:点击CSDN,那么便在选项卡的标签名中显示出CSDN)

       重名的选项卡不能够重复展示出多个

       如果点击了一次选项卡,那么在第二次点击它时,不展示新的选项卡,只需选中对应选项卡即可

表结构

 

实体类,工具类,配置文件等在上篇已经全部展示过,在此有不懂的小伙伴,可以点击下方链接查看 

LayUi之树形结构的详解(附有全案例代码)http://t.csdn.cn/6Io5t

dao

(dao层有些许的变化,添加二级菜单中的属性,如果我们还是运用上一篇的方法,那么我们需要在TreeVo工具类中写无数个属性,这样太过于繁杂,那么我们可以将所有的属性都用一个map集合装载起来,那么便可以一次拿到所有的属性👇👇)

package com.wh.dao;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.wh.entity.Permission;
import com.wh.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.BuildTree;
import com.zking.util.PageBean;
import com.zking.util.TreeVo;public class PermissionDao extends BaseDao<Permission>{//查询所有public List<Permission> list( Permission permission, PageBean pageBean) throws Exception {String sql="select * from t_oa_permission";return super.executeQuery(sql, Permission.class, pageBean);}//将原数据转换成有层级关系的数据(借助自定义 工具类TreeVo完成)public List<TreeVo<Permission>> menus( Permission permission, PageBean pageBean) throws Exception {List<TreeVo<Permission>> menus = new ArrayList<>();List<Permission> list = this.list(permission, pageBean);for (Permission p : list) {TreeVo<Permission> tv = new TreeVo<>();tv.setId(p.getId()+"");tv.setParentId(p.getPid()+"");tv.setText(p.getName());Map<String , Object> map = new HashMap<>();map.put("self", p);tv.setAttributes(map);menus.add(tv);}
//		return menus;return BuildTree.buildList(menus, "-1");//-1是顶级节点的id}}

jsp界面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<%@include file="/common/head.jsp"%>
<script type="text/javascript" src="static/js/main.js"></script>
</head>
<body><div class="layui-layout layui-layout-admin"><div class="layui-header"><div class="layui-logo layui-hide-xs layui-bg-black">光军会议OA系统</div><!-- 头部区域(可配合layui 已有的水平导航) --><ul class="layui-nav layui-layout-left"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm"lay-header-event="menuLeft"><iclass="layui-icon layui-icon-spread-left"></i></li><!-- Top导航栏 --><li class="layui-nav-item layui-hide-xs"><a href="">nav 1</a></li><li class="layui-nav-item layui-hide-xs"><a href="">nav 2</a></li><li class="layui-nav-item layui-hide-xs"><a href="">nav 3</a></li><li class="layui-nav-item"><a href="javascript:;">navgroups</a><dl class="layui-nav-child"><dd><a href="">menu 11</a></dd><dd><a href="">menu 22</a></dd><dd><a href="">menu 33</a></dd></dl></li></ul><!-- 个人头像及账号操作 --><ul class="layui-nav layui-layout-right"><li class="layui-nav-item layui-hide layui-show-md-inline-block"><a href="javascript:;"> <imgsrc="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"class="layui-nav-img"> tester</a><dl class="layui-nav-child"><dd><a href="">Your Profile</a></dd><dd><a href="">Settings</a></dd><dd><a href="login.jsp">Sign out</a></dd></dl></li><li class="layui-nav-item" lay-header-event="menuRight" lay-unselect><a href="javascript:;"> <iclass="layui-icon layui-icon-more-vertical"></i></a></li></ul></div><div class="layui-side layui-bg-black"><div class="layui-side-scroll"><!-- 左侧导航区域(可配合layui已有的垂直导航) --><ul id="menu" class="layui-nav layui-nav-tree" lay-filter="menu"></ul></div></div><div class="layui-body"><!-- 内容主体区域 --><div class="layui-tab" lay-filter="demo" lay-allowclose="true"><ul class="layui-tab-title"><!-- 选项卡 --></ul><div class="layui-tab-content"><!-- 选项卡内容 --></div></div></div><div class="layui-footer"><!-- 底部固定区域 -->底部固定区域</div></div></body>
</html>

js

(为了规范,我们的js代码以及El表达式等是不应该出现在jsp页面中的,所以我们就可以将每个页面所对应的js代码封装起来,然后在引入到页面中)


var element,layer,util,$;
layui.use(['element', 'layer', 'util'], function(){element = layui.element,layer = layui.layer,util = layui.util,$ = layui.$;//左侧树形菜单$.ajax({url:"permission.action?methodName=menus",dataType:'json',method: 'post',success: function(data) {console.info(data)var content=' ';$.each(data,function(i,n){content+=' <li class="layui-nav-item layui-nav-itemed"> ';content+='		<a class="" href="javascript:;">'+n.text+'</a> ';  if(n.hasChildren){var children =n.children;content+='<dl class="layui-nav-child"> ';$.each(children,function(idx,nodes){content+=' <dd><a href="javascript:;" onclick="openTab(\''+nodes.text+'\',\''+nodes.attributes.self.url+'\',\''+nodes.id+'\' )">'+nodes.text+'</a></dd> ';
//					content+=' <dd><a href="javascript:;" onclick="openTab()">'+nodes.text+'</a></dd> ';})content+='</dl>';}content+=' </li>';})$("#menu").html(content);element.render();		}})
});//	 //右侧选项卡function openTab(title,content,id){var $node=$('li[lay-id="'+id+'"]');console.info($node);//新增一个Tab项if($node.length==0){element.tabAdd('demo', {title : title, //用于演示content :"<iframe src='"+content+"' width='100%' height='100%'></iframe>",id :id})}//切换到指定Tab项element.tabChange('demo', id); //切换到:用户管理}//右侧选项卡
//	 function openTab(title,content,id){
//				//新增一个Tab项
//		 element.tabAdd('demo', {
//		        title: '新选项'+ (Math.random()*1000|0) //用于演示
//		        ,content: '内容'+ (Math.random()*1000|0)
//		        ,id: new Date().getTime() //实际使用一般是规定好的id,这里以时间戳模拟下
//		      })
//		    }

      好啦,今天的分享就到这了,希望能够帮到你呢!😊😊         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java版鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

【云原生】· 一文了解docker中的网络

目录 &#x1f352;查看docker网络 &#x1f352;bridge网络 &#x1f352;none网络 &#x1f352;host网络 &#x1f352;自定义容器网络 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;云原生专栏 根据前面的学习&#xff0c;已经对d…

Qt/C++原创项目作品精选(祖传原创/性能凶残)

00 前言说明 从事Qt开发十年有余&#xff0c;一开始是做C#.NET开发的&#xff0c;因为项目需要&#xff0c;转行做嵌入式linux开发&#xff0c;在嵌入式linux上做可视化界面开发一般首选Qt&#xff0c;当然现在可选的方案很多比如安卓&#xff0c;但是十多年前那时候板子性能低…

服务器反向代理

反向代理作用 隐藏服务器信息 -> 保证内网的安全&#xff0c;通常将反向代理作为公网访问地址&#xff0c;web服务器是内网&#xff0c;即通过nginx配置外网访问web服务器内网 举例 百度的网址是&#xff1a;http://www.baidu.com &#xff0c; 现在我通过自己的服务器地…

unity 调用C++ dll 有类和指针操作

这个在之前unity 调用C dll 操作升级套娃函数调用_天人合一peng的博客-CSDN博客的基础上&#xff0c;但实事时类相互嵌套&#xff0c;非常不好处理。 1 测试直接将main()生成dll程序能运行不。 发现是可以的。 2 那就是想方法把对象或指针的操作的下一级函数直接写到main里面&…

STM32基础知识点总结

一、基础知识点 1、课程体系介绍 单片机概述arm体系结构STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用SPI液晶屏 STM32-中断系统 STM32-时钟系统 STM32-ADC DMA 温湿度传感器-DHT11 2.如何学习单片机课程 多听理论、多理解、有问题及时提问 自己多…

ChatGPT助力校招----面试问题分享(十一)

1 ChatGPT每日一题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 问题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 ChatGPT&#xff1a;对于高速信号线来说&#xff0c;最好避免使用直角布线。直角布线会引入反射和信号损耗&#xff0c;从而导致信号完…

【Python】selenium项目实战:从12306网站获取特定时间段二等座有票的车次

文章目录 一、项目背景二、页面查找1、查询条件2、定位有二等座的元素3、定位有二等座的车次信息4、CtrlF检验xpath查找的车次 三、代码实现 一、项目背景 工具&#xff1a; pythonpycharmselenium 12306网址&#xff1a; https://kyfw.12306.cn/otn/leftTicket/init?linktyp…

【云原生】Docker跨主机网络Overlay与Macvlan的区别

跨主机网络通信解决方案 docker原生的overlay和macvlan 第三方的flannel&#xff0c;weave&#xff0c;calico 1.overlay网络 在Docker中&#xff0c;Overlay网络是一种容器网络驱动程序&#xff0c;它允许在多个Docker主机上创建一个虚拟网络&#xff0c;使得容器可以通过这…

氢辉能源|[4GW]质子交换膜产线投产发布会暨[3MW]PEM电解槽正式交付

2023年7月12日下午&#xff0c;氢辉能源&#xff08;深圳&#xff09;有限公司&#xff08;以下简称氢辉能源&#xff09;质子交换膜产线投产发布会暨12台50标方3MW电解槽交付仪式在深圳市龙岗区国际低碳城成功举办。 此外&#xff0c;氢辉能源与远景能源、润世华集团、宏洲新能…

【MySQL】MySQL里程碑

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️MySQL】 文章目录 时间表从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 时间表 从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 1995年&#xff0c;MySQL 1.0发布&#xff0c;仅供内…

MongoDB负载均衡集群监控

对负载均衡的集群监控&#xff0c;不仅仅集中在对集群所有的资源、服务等进行监控&#xff0c;还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例&#xff0c;对逻辑层面的监控&#xff0c;就是模拟用户行为&#xff0c;访问集群数据&#xff0c;判断运行状态是否正常。 Mong…

opencv 图像基础处理_灰度图像

opencv 学习2_灰度图像 二值图像表示起来简单方便&#xff0c;但是因为其仅有黑白两种颜色&#xff0c;所表示的图像不够细腻。如果想要表现更多的细节&#xff0c;就需要使用更多的颜色。例如&#xff0c;图 2-3 中的 lena 图像是一幅灰度图像&#xff0c; 它采用了更多的数值…

简单线性回归评估指标+R Squared

使得每一个数据集尽可能的小 均方误差MSE&#xff1a;&#xff08;平方和取平均值&#xff09; 均方根误差RMSE&#xff1a;&#xff08;平方和取平均值开根号&#xff09;&#xff1a;平均误差值 平均绝对误差MAE&#xff1a;&#xff08;绝对值取平均&#xff09;&#xff1a…

Vue3通透教程【十八】TS为组件的props标注类型

文章目录 &#x1f31f; 写在前面&#x1f31f; 回顾defineProps的基础写法&#x1f31f; defineProps的TS写法&#x1f31f; withDefaults方法&#x1f31f; 拓展&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 …

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透&#xff1a;Ngrok 配置服务端 客户端配置 客户端生成后门&#xff0c;等待目标上线 内网穿透&#xff1a;Frp 客户端服务端建立连接 MSF生成后门&#xff0c;等待上线 内网穿透&#xff1a;Nps 服…

【Linux】- Linux 磁盘分区、挂载

Linux 磁盘分区、挂载 1.1 Linux 分区1.2 硬盘说明1.3 磁盘情况查询 1.1 Linux 分区 原理介绍 Linux 来说无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系…

Mac搭建安卓模拟器(支持M1/M2)

引言 最近在研究Vue打包成app&#xff0c;给我的报价器搞一个移动端&#xff0c;奈何没有安卓手机用于测试。所以想到安装一个安卓模拟器。 看了下目前主流的安卓模拟器基本都不支持Mac版本。网易的mumu目前来看还是只支持Intel芯。 1. 简单版&#xff08;仅M系&#xff09;…

BigTable:一个针对结构化数据的分布式存储系统----论文摘要

目录 摘要 1. 介绍 2. 数据模型 行 列族 时间戳 3. API 4. 所需构件 5. 实现 5.1 Tablet的位置 5.2 Tablet分配 5.3 Tablet服务 5.4 压实&#xff08;Compactions&#xff09; 6. 优化 本地化分组 压缩(compression) 通过缓存提高读操作的性能 Bloom过滤器 C…

数据库查询速度上不去的查询和分析

主要原因 数据库查询速度上不去、阻塞是指在并发访问 MySQL 数据库时,某个事务占用了资源并且长时间不释放,导致其他事务无法执行或执行缓慢的情况。MySQL 阻塞可能会导致数据库性能下降,甚至出现死锁等问题,需要马上进行处理。在 MySQL中,线程阻塞可能是由于以下原因导致…