layui--03

简介: layui--03

目录:

1.什么是选项卡:

在layui中,选项卡(Tab)是一种常用的页面布局元素,用于在同一页面上展示多个内容区域并切换显示。选项卡通常由一组水平或垂直的标签(Tab)和对应的内容区域组成。

在layui中,可以使用element模块的tab方法来实现选项卡功能。具体使用步骤如下:

通过下面这些代码可以形成一个简单的选项卡:

  1. 引入layui库文件和相关样式:
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>

2.创建HTML结构,定义标签和内容区域:

<div class="layui-tab">
  <ul class="layui-tab-title">
    <li class="layui-this">Tab1</li>
    <li>Tab2</li>
    <li>Tab3</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">内容1</div>
    <div class="layui-tab-item">内容2</div>
    <div class="layui-tab-item">内容3</div>
  </div>
</div>

3.调用layui的选项卡方法进行初始化:

layui.use(['element'], function(){
  var element = layui.element;
  // 初始化选项卡
  element.tab();
});

2.layui选项卡:

1.把选项卡嵌入到项目里面(还没有优化的        ):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
      <%@include file="common/header.jsp" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台主页</title>
</head>
<body>
<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
    <div class="layui-logo layui-hide-xs layui-bg-black">layout demo</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">
        <i class="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:;">nav groups</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:;">
          <img src="//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:;">
          <i class="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">
    <li class="layui-this" lay-id="11">网站设置</li>
    <li lay-id="22">用户管理</li>
    <li lay-id="33">权限分配</li>
    <li lay-id="44">商品管理</li>
    <li lay-id="55">订单管理</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">内容1</div>
    <div class="layui-tab-item">内容2</div>
    <div class="layui-tab-item">内容3</div>
    <div class="layui-tab-item">内容4</div>
    <div class="layui-tab-item">内容5</div>
  </div>
</div>
  </div>
  <div class="layui-footer">
    <!-- 底部固定区域 -->
            底部固定区域
  </div>
</div>
<script>
//JS 
layui.use(['element', 'layer', 'util'], function(){
  var element = layui.element
  ,layer = layui.layer
  ,util = layui.util
  ,$ = layui.$;
  $.ajax({
   url:"${pageContext.request.contextPath }/permission.action?methodName=menus",
       dataType:'json',
       success:function(data){
         console.log(data);
         var htmlStr='';
         $.each(data,function(i,n){
           htmlStr +='  <li class="layui-nav-item layui-nav-itemed">';
           htmlStr +='<a class="" href="javascript:;">'+n.text+'</a>';
           if(n.hasChildren){
            var children= n.children;
             htmlStr +=' <dl class="layui-nav-child">';
             $.each(children,function(idx,node){
                 htmlStr +='  <dd><a href="javascript:;">'+node.text+'</a></dd>';
             })
             htmlStr +='  </dl>';
           }
           htmlStr +=' </li>';
         })
         $("#menu").html(htmlStr);
         element.render('menu');
       }
  });
});
</script>
</body>
</html>

输出结果:

1. 将静态的选项卡转换为动态的选项卡:

2.将选项卡的标签名变成实际菜单名 :

htmlStr +='  
<dd>
<a href="javascript:;"  onclick="openTab(\''+node.text+'\',\''+node.attributes.self.url+'\',\''+node.id+'\')">
'+node.text+'</a></dd>';

3.重名的选项卡不能打开新的:

                     if($node.length == 0){
                       //将静态的选项卡转换为动态的选项卡
             element.tabAdd('demo', {
                  title: title //用于演示
                  ,content: content
                  ,id: id //实际使用一般是规定好的id,这里以时间戳模拟下
                })
           }

4.重名选项卡需要未选中:

如果这张表有很多字段,就用map集合,把当前表对应的数据放进map集合里面 :

 

所有代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
      <%@include file="common/header.jsp" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台主页</title>
</head>
<body>
<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
    <div class="layui-logo layui-hide-xs layui-bg-black">layout demo</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">
        <i class="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:;">nav groups</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:;">
          <img src="//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:;">
          <i class="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">
    <!-- 内容主体区域 -->
<!--  3.将选项卡的标签名变成实际菜单名
 -->
 <div class="layui-tab" lay-filter="demo" lay-allowclose="true">
  <ul class="layui-tab-title">
    <li class="layui-this" lay-id="11">网站设置</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">内容1</div>
  </div>
</div>
  </div>
  <div class="layui-footer">
    <!-- 底部固定区域 -->
            底部固定区域
  </div>
</div>
<script>
//JS 
var element,layer,util,$;
layui.use(['element', 'layer', 'util'], function(){
   element = layui.element
  ,layer = layui.layer
  ,util = layui.util
  ,$ = layui.$;
  $.ajax({
   url:"${pageContext.request.contextPath }/permission.action?methodName=menus",
       dataType:'json',
       success:function(data){
         console.log(data);
         var htmlStr='';
         $.each(data,function(i,n){
           htmlStr +='  <li class="layui-nav-item layui-nav-itemed">';
           htmlStr +='<a class="" href="javascript:;">'+n.text+'</a>';
           if(n.hasChildren){
            var children= n.children;
             htmlStr +=' <dl class="layui-nav-child">';
             $.each(children,function(idx,node){
              // 3.将选项卡的标签名变成实际菜单名
 htmlStr +='  <dd><a href="javascript:;"  onclick="openTab(\''+node.text+'\',\''+node.attributes.self.url+'\',\''+node.id+'\')">'+node.text+'</a></dd>';
             })
             htmlStr +='  </dl>';
           }
           htmlStr +=' </li>';
         })
         $("#menu").html(htmlStr);
         element.render('menu');
       }
  });
});
/**
 * 1.参考官网是否有空间/模块能够支撑完对应功能--静态
 2.将静态的选项卡转换为动态的选项卡
 3.将选项卡的标签名变成实际菜单名
 4.重名的选项卡不能打开新的
 5.重名选项卡需要未选中
 */
function openTab(title,content,id){
          var $node = $('li[lay-id="'+id+'"]');
          console.log($node);
/*          4.重名的选项卡不能打开新的
 */          
                     if($node.length == 0){
                       //将静态的选项卡转换为动态的选项卡
             element.tabAdd('demo', {
                  title: title //用于演示
                  ,content: content
                  ,id: id //实际使用一般是规定好的id,这里以时间戳模拟下
                })
           }
                 /* 5.重名选项卡需要未选中 */
           element.tabChange('demo', id); //切换到:用户管理
}
</script>
</body>
</html>

输出结果:

3.项目重构:

先建立一个login.js和main.js:

再把login.jsp里面的内容复制到login.js:

 

再把main.jsp里面的内容复制到main.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',
       success:function(data){
         console.log(data);
         var htmlStr='';
         $.each(data,function(i,n){
           htmlStr +='  <li class="layui-nav-item layui-nav-itemed">';
           htmlStr +='<a class="" href="javascript:;">'+n.text+'</a>';
           if(n.hasChildren){
            var children= n.children;
             htmlStr +=' <dl class="layui-nav-child">';
             $.each(children,function(idx,node){
              // 3.将选项卡的标签名变成实际菜单名
 htmlStr +='  <dd><a href="javascript:;"  onclick="openTab(\''+node.text+'\',\''+node.attributes.self.url+'\',\''+node.id+'\')">'+node.text+'</a></dd>';
             })
             htmlStr +='  </dl>';
           }
           htmlStr +=' </li>';
         })
         $("#menu").html(htmlStr);
         element.render('menu');
       }
  });
});
/**
 * 1.参考官网是否有空间/模块能够支撑完对应功能--静态
 2.将静态的选项卡转换为动态的选项卡
 3.将选项卡的标签名变成实际菜单名
 4.重名的选项卡不能打开新的
 5.重名选项卡需要未选中
 */
function openTab(title,content,id){
          var $node = $('li[lay-id="'+id+'"]');
          console.log($node);
/*          4.重名的选项卡不能打开新的
 */          
                     if($node.length == 0){
                       //将静态的选项卡转换为动态的选项卡
             element.tabAdd('demo', {
                  title: title //用于演示
                  ,content: "<iframe frameborder='0' src='"+content+"' scrolling='auto' style='width:100%;height:100%;'></iframe>"
                  ,id: id //实际使用一般是规定好的id,这里以时间戳模拟下
                })
           }
                 /* 5.重名选项卡需要未选中 */
           element.tabChange('demo', id); //切换到:用户管理
}

输出结果:

目录
打赏
0
0
0
0
9
分享
相关文章
让AI看懂3小时长视频!Eagle 2.5:英伟达推出8B视觉语言模型,长视频理解能力碾压72B大模型
Eagle 2.5是英伟达推出的8B参数视觉语言模型,通过创新训练策略在长视频和高分辨率图像理解任务中超越更大规模模型,支持512帧视频输入和多样化多模态任务。
256 11
让AI看懂3小时长视频!Eagle 2.5:英伟达推出8B视觉语言模型,长视频理解能力碾压72B大模型
uniapp input框监听回车搜索事件效果demo(整理)
uniapp input框监听回车搜索事件效果demo(整理)
LayUI upload上传组件上传文件的两种方式
LayUI upload上传组件上传文件的两种方式
904 0
C++ 11新特性之tuple
C++ 11新特性之tuple
136 0
(八)MySQL锁机制:高并发场景下该如何保证数据读写的安全性?
锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线程的应用自然无法将机器性能发挥到最大,想要让程序的并发性越高,多线程技术自然就呼之欲出,多线程技术一方面能充分压榨CPU资源,另一方面也能提升程序的并发支持性。
876 3
layui框架实战案例(1):layui组件table异步加载数据结合php后台动态翻页的解决方案
layui框架实战案例(1):layui组件table异步加载数据结合php后台动态翻页的解决方案
457 0
解决报错--‘vite’ 不是内部或外部命令,也不是可运行的程序!
解决报错--‘vite’ 不是内部或外部命令,也不是可运行的程序!
layui实现左侧导航树形菜单
layui实现左侧导航树形菜单
993 0
layui实现左侧导航树形菜单
JVM-并发标记带来问题和解决办法
JVM-并发标记带来问题和解决办法
183 0
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等