layui实现左侧菜单点击右侧内容区显示


Posted in Javascript onJuly 26, 2019

layui这个前端框架对后端人员来说提供了极大的方便,很大一部分同学在刚接触到这个框架就迫不及待的要动手实践了,刚好最近需要开发一个后台管理项目,就拿layui来进行学习和实践。

还没有接触到的同学可以先通读一遍文档,这样在遇到问题的时候才能够对症下药,仔细研究相关的板块
今天我们先来学习一下使用layui来实现左侧点击菜单,内容区显示tab

实验效果

layui实现左侧菜单点击右侧内容区显示

实现过程

html代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport"
 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title><?php echo $curTitle;?></title>
 <link rel="stylesheet" href="js/layui/css/layui.css" >
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
 <div class="layui-header">
 <div class="layui-logo">XXXX业务管理平台</div>
 <ul class="layui-nav layui-layout-right">
 <li class="layui-nav-item">
 欢迎光临,商户001
 </li>
 <li class="layui-nav-item"><a href="">安全退出</a></li>
 </ul>
 </div>

 <div class="layui-side layui-bg-black">
 <div class="layui-side-scroll">
 <!-- 左侧垂直导航区域-->
 <ul class="layui-nav layui-nav-tree" lay-filter="test">
 <li class="layui-nav-item">
  <a class="" href="javascript:;" >管理员管理</a>
  <dl class="layui-nav-child">
  <dd>
  <a href="javascript:;" data-id="1" data-title="管理员列表" data-url="index.php?&a=adminList"
  class="site-demo-active" data-type="tabAdd">管理员列表</a></dd>
  <dd><a href="javascript:;" data-id="2" data-title="管理员日志" data-url="index.php?&a=adminLogList"
  class="site-demo-active" data-type="tabAdd">管理员日志</a></dd>
  </dl>
 </li>
 <li class="layui-nav-item">
  <a href="javascript:;" >交易管理</a>
  <dl class="layui-nav-child">
  <dd><a href="javascript:;" data-id="" data-id="3" data-title="存款列表"
   data-url="index.php?&a=adminList" class="site-demo-active" data-type="tabAdd">存款列表</a>
  </dd>
  <dd><a href="javascript:;" >代付列表</a></dd>
  </dl>
 </li>
 <li class="layui-nav-item">
  <a href="javascript:;" >系统管理</a>
  <dl class="layui-nav-child">
  <dd><a href="javascript:;" >支付API设置</a></dd>
  <dd><a href="javascript:;" >公告设置</a></dd>
  <dd><a href="javascript:;" >控制台</a></dd>
 </li>
 </ul>
 </div>
 </div>

 <!--tab标签-->
 <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;">
 <ul class="layui-tab-title"></ul>
 <div class="layui-tab-content"></div>
 </div>

<div class="layui-footer" style="text-align:center;">
 <!-- 底部固定区域 -->
 © sunway.tk XXXX业务管理平台
</div>
</div>
<script src="/js/layui/layui.js"></script>
<script>
<!--这里是放置js代码区域-->
</script>
</body>
</html>

javascript代码:

layui.use(['element', 'layer', 'jquery'], function () {
 var element = layui.element;
 // var layer = layui.layer;
 var $ = layui.$;
 // 配置tab实践在下面无法获取到菜单元素
 $('.site-demo-active').on('click', function () {
 var dataid = $(this);
 //这时会判断右侧.layui-tab-title属性下的有lay-id属性的li的数目,即已经打开的tab项数目
 if ($(".layui-tab-title li[lay-id]").length <= 0) {
 //如果比零小,则直接打开新的tab项
 active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
 } else {
 //否则判断该tab项是否以及存在
 var isData = false; //初始化一个标志,为false说明未打开该tab项 为true则说明已有
 $.each($(".layui-tab-title li[lay-id]"), function () {
  //如果点击左侧菜单栏所传入的id 在右侧tab项中的lay-id属性可以找到,则说明该tab项已经打开
  if ($(this).attr("lay-id") == dataid.attr("data-id")) {
  isData = true;
  }
 })
 if (isData == false) {
  //标志为false 新增一个tab项
  active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
 }
 }
 //最后不管是否新增tab,最后都转到要打开的选项页面上
 active.tabChange(dataid.attr("data-id"));
 });

 var active = {
 //在这里给active绑定几项事件,后面可通过active调用这些事件
 tabAdd: function (url, id, name) {
 //新增一个Tab项 传入三个参数,分别对应其标题,tab页面的地址,还有一个规定的id,是标签中data-id的属性值
 //关于tabAdd的方法所传入的参数可看layui的开发文档中基础方法部分
 element.tabAdd('demo', {
  title: name,
  content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:99%;"></iframe>',
  id: id //规定好的id
 })
 FrameWH(); //计算ifram层的大小
 },
 tabChange: function (id) {
 //切换到指定Tab项
 element.tabChange('demo', id); //根据传入的id传入到指定的tab项
 },
 tabDelete: function (id) {
 element.tabDelete("demo", id);//删除
 }
 };
 function FrameWH() {
 var h = $(window).height();
 $("iframe").css("height",h+"px");
 }
 });

实现逻辑:动态判断所点击的菜单元素,利用元素上设置的data属性值,在右侧内容区生成页面iframe进行动态显示
参考文献:layui官网

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery循环map功能的代码
Feb 26 Javascript
JavaScript中的操作符==与===介绍
Dec 31 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
JS数据类型判断的几种常用方法
Jul 07 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
详解nvm管理多版本node踩坑
Jul 26 #Javascript
layui自定义ajax左侧三级菜单
Jul 26 #Javascript
layui递归实现动态左侧菜单
Jul 26 #Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 #Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 #Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 #Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 #Javascript
You might like
PHP获取音频文件的相关信息
2015/06/22 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python如何对齐字符串
2020/07/30 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
路政管理专业推荐信
2013/11/11 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
活动策划邀请函
2014/02/06 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
python基础详解之if循环语句
2021/04/24 Python
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
英镑符号 £
2022/02/17 杂记
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers