使用.LayUI实现动态选项卡Tab的强大功能

这篇具有很好参考价值的文章主要介绍了使用.LayUI实现动态选项卡Tab的强大功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


使用.LayUI实现动态选项卡Tab的强大功能,layui,okhttp,前端

正文:

在Web界面开发中,动态选项卡Tab是一种常见且实用的功能。它可以让用户在页面中切换不同的内容,提供了更好的用户体验。而.LayUI作为一款流行的前端框架,提供了丰富的组件,包括可以轻松实现动态选项卡Tab的功能。在本文中,我们将学习如何使用.LayUI来创建动态选项卡Tab,并探索其强大的功能。

1.引入.LayUI框架文件

首先,我们需要引入.LayUI框架的相关文件。你可以从.LayUI官方网站上下载最新的框架文件,并将其引入到你的项目中。以下是一个示例的HTML代码,用于引入.LayUI框架文件:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="path/to/layui/css/layui.css">
    <script src="path/to/layui/layui.js"></script>
</head>
<body>
</body>
</html>
接下来,我们需要创建一个容器元素来显示选项卡。你可以使用一个div元素作为容器,并为其指定一个唯一的id用于后续的操作。以下是一个示例的HTML代码:

<body>
    <div id="tabContainer"></div>
</body>

2.创建选项卡容器

现在,我们可以使用.LayUI的JavaScript API来初始化选项卡,并添加动态选项卡项。以下是一个使用.LayUI实现动态选项卡Tab的示例:

<div class="layui-tab">
  <ul class="layui-tab-title">
    <li class="layui-this">网站设置</li>
    <li>用户管理</li>
    <li>权限分配</li>
    <li>商品管理</li>
    <li>订单管理</li>
  </ul>
  <div class="layui-tab-content">
    <div class="layui-tab-item layui-show">
      1. 高度默认自适应,也可以随意固宽。
      <br>2. Tab进行了响应式处理,所以无需担心数量多少。
    </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>

3.初始化.LayUI组件和创建选项卡项以及获取数据准备

 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(index,node){
 					htmlStr+=' <dd><a href="javascript:;" onclick="tabAdd(\''+node.text+'\',\''+node.attributes.url+'\',\''+node.id+'\')">'+node.text+'</a></dd>';
 		 			})
 					htmlStr+='</dl>';
 				}
 				htmlStr+=' </li>';
 			})
 			$("#menu").html(htmlStr);
 		 	element.render('menu'); 
 		}
 		
 	});
  
 	
});


function tabAdd(text,url,id){
     //新增一个Tab项
     var $node = $('li[lay-id="'+id+'"]');
     if($node.length == 0){
     element.tabAdd('demo', {
       title: text//用于演示
       ,content: "<iframe frameborder='0' src='"+url+"' scrolling='auto' style='width:100%;height:100%;'></iframe>"
       ,id: id //实际使用一般是规定好的id,这里以时间戳模拟下
     })
     }
     element.tabChange('demo', id); //切换到:用户管理


}

3.1 Permission实体类

package com.zking.entity;

public class Permission {
 private long id;
 private String name;
 private String description;
 private String url;
 private long pid;
 private int ismenu;
 private long displayno;
 
 public Permission() {
	// TODO Auto-generated constructor stub
}

public Permission(String name, String description, String url, long pid, int ismenu, long displayno) {
	super();
	this.name = name;
	this.description = description;
	this.url = url;
	this.pid = pid;
	this.ismenu = ismenu;
	this.displayno = displayno;
}

public long getId() {
	return id;
}

public void setId(long id) {
	this.id = id;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public String getDescription() {
	return description;
}

public void setDescription(String description) {
	this.description = description;
}

public String getUrl() {
	return url;
}

public void setUrl(String url) {
	this.url = url;
}

public long getPid() {
	return pid;
}

public void setPid(long pid) {
	this.pid = pid;
}

public int getIsmenu() {
	return ismenu;
}

public void setIsmenu(int ismenu) {
	this.ismenu = ismenu;
}

public long getDisplayno() {
	return displayno;
}

public void setDisplayno(long displayno) {
	this.displayno = displayno;
}

public Permission(long id, String name, String description, String url, long pid, int ismenu, long displayno) {
	super();
	this.id = id;
	this.name = name;
	this.description = description;
	this.url = url;
	this.pid = pid;
	this.ismenu = ismenu;
	this.displayno = displayno;
}

@Override
public String toString() {
	return "Permission [id=" + id + ", name=" + name + ", description=" + description + ", url=" + url + ", pid=" + pid
			+ ", ismenu=" + ismenu + ", displayno=" + displayno + "]";
}
 
	
	
}

3.2 PermissionDao类

package com.zking.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.entity.Permission;
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> QueryAll(Permission permission,PageBean pagebean) throws Exception {
		String sql = "select * from t_oa_permission";
		return super.executeQuery(sql, Permission.class, pagebean);
	}
	
	public List<TreeVo<Permission>> menus(Permission permission,PageBean pagebean) throws Exception{
		List<TreeVo<Permission>> lst = new ArrayList<TreeVo<Permission>>();
		
		List<Permission> list = this.QueryAll(permission, pagebean);
		for (Permission p : list) {
			TreeVo<Permission> tv = new TreeVo<Permission>();
			tv.setId(p.getId()+"");
			tv.setText(p.getName());
			tv.setParentId(p.getPid()+"");
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("skyl",p);
			tv.setAttributes(map);
			lst.add(tv);
		}
		
		return BuildTree.buildList(lst,"-1");
	}
	
	public static void main(String[] args) {
		try {
			List<TreeVo<Permission>> menus = new PermissionDao().menus(null, null);
			ObjectMapper om  = new ObjectMapper();
			System.out.println(om.writeValueAsString(menus));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

3.3 TreeVo类

package com.zking.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


public class TreeVo<T> {
	/**
	 * 节点ID
	 */
	private String id;
	/**
	 * 显示节点文本
	 */
	private String text;
	/**
	 * 节点状态,open closed
	 */
	private Map<String, Object> state;
	/**
	 * 节点是否被选中 true false
	 */
	private boolean checked = false;
	/**
	 * 节点属性
	 */
	private Map<String, Object> attributes;

	/**
	 * 节点的子节点
	 */
	private List<TreeVo<T>> children = new ArrayList<TreeVo<T>>();

	/**
	 * 父ID
	 */
	private String parentId;
	/**
	 * 是否有父节点
	 */
	private boolean hasParent = false;
	/**
	 * 是否有子节点
	 */
	private boolean hasChildren = false;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public Map<String, Object> getState() {
		return state;
	}

	public void setState(Map<String, Object> state) {
		this.state = state;
	}

	public boolean isChecked() {
		return checked;
	}

	public void setChecked(boolean checked) {
		this.checked = checked;
	}

	public Map<String, Object> getAttributes() {
		return attributes;
	}

	public void setAttributes(Map<String, Object> attributes) {
		this.attributes = attributes;
	}

	public List<TreeVo<T>> getChildren() {
		return children;
	}

	public void setChildren(List<TreeVo<T>> children) {
		this.children = children;
	}

	public boolean isHasParent() {
		return hasParent;
	}

	public void setHasParent(boolean isParent) {
		this.hasParent = isParent;
	}

	public boolean isHasChildren() {
		return hasChildren;
	}

	public void setChildren(boolean isChildren) {
		this.hasChildren = isChildren;
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public TreeVo(String id, String text, Map<String, Object> state, boolean checked, Map<String, Object> attributes,
                  List<TreeVo<T>> children, boolean isParent, boolean isChildren, String parentID) {
		super();
		this.id = id;
		this.text = text;
		this.state = state;
		this.checked = checked;
		this.attributes = attributes;
		this.children = children;
		this.hasParent = isParent;
		this.hasChildren = isChildren;
		this.parentId = parentID;
	}

	public TreeVo() {
		super();
	}

}

3.4 PermissionAction类

该类继承了ActionSupport类并且实现了ModelDriver接口
package com.zking.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.dao.PermissionDao;
import com.zking.entity.Permission;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.ResponseUtil;
import com.zking.util.TreeVo;

public class PermissionAction extends ActionSupport implements ModelDriver<Permission> {
	private Permission p = new Permission();
	private PermissionDao pd = new PermissionDao();
	
	public void menus(HttpServletRequest req, HttpServletResponse resp) {
		try {
			List<TreeVo<Permission>> menus = pd.menus(null, null);
			ResponseUtil.writeJson(resp, menus);
		
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public Permission getModel() {
		// TODO Auto-generated method stub
		return p;
	}

}

4.监听选项卡的切换事件

 element.tabChange('demo', id); //切换到:用户管理

5.运行和测试

使用.LayUI实现动态选项卡Tab的强大功能,layui,okhttp,前端

如此简单,我们就成功地使用.LayUI实现了动态选项卡Tab的功能!你可以根据需要添加更多的选项卡项,并在其中放置自己的内容。此外,.LayUI还提供了其他丰富的方法和事件,可以根据你的项目需求进行定制和扩展。

6.总结:

通过本文,我们了解了如何使用.LayUI来创建动态选项卡Tab,并展示了其强大的功能。借助.LayUI框架提供的丰富组件和灵活的API,我们可以轻松实现动态选项卡Tab,为用户提供更好的使用体验。希望这篇博客对你有所帮助,祝你在Web开发中取得成功!文章来源地址https://www.toymoban.com/news/detail-566786.html

到了这里,关于使用.LayUI实现动态选项卡Tab的强大功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Layui之选项卡案例 详细易懂

    ⭐  本期精彩: 利用Layui框架实现动态选项卡 ⭐ 继上一篇已经实现了左边的树形菜单栏,这一关卡我们已通过,接下来就是实现右边的动态选项卡的关卡,上个关卡的效果及链接 目录 ⭐ 本期精彩: 利用Layui框架实现动态选项卡           ⭐ 链接:http://t.csdn.cn/tYccL 一

    2024年02月16日
    浏览(40)
  • layui介绍以及登录功能的实现

    Layui 是一套开源免费的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,它更多是面向于后端开发者,即无需涉足各类构建工具,只需面向浏览器本身,便可将页面所需呈现

    2024年02月16日
    浏览(41)
  • Layui快速入门之第六节 选项卡

    目录 一:基本概念 选项卡依赖element模块 API 元素属性 基本使用: 二:选项卡风格 默认风格 简约风格  ​编辑 卡片风格 三:hash 状态匹配 四:tab相关操作 渲染 tab 添加 tab 删除 tab 切换 tab 自定义 tab 五:事件 tab 切换事件 tab 删除事件              选项卡组件  tab  是指

    2024年02月07日
    浏览(39)
  • SpringBoot + layui 框架实现一周免登陆功能

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringBoot 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringBoot +

    2024年02月10日
    浏览(30)
  • 前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)

    目录 一、前言 1.什么是树形菜单 2.树形菜单的使用场景 二、案例实现 1.需求分析 2.前期准备工作 ①导入依赖 ②工具类 BaseDao(通用增删改查) BuildTree(完成平级数据到父子级的转换) ResponseUtil(将数据转换成json格式进行回显) ③编写实体 3.dao层编写 4.servlet层编写 5.jsp页面搭

    2024年02月13日
    浏览(39)
  • SpringBoot+layUI实现表格的某一列数据刷新功能案例分享

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分享专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:如何入门Python——学习

    2024年02月06日
    浏览(80)
  • 前端框架Layui实现动态表格效果用户管理实例(对表格进行CRUD操作-附源码)

    目录 一、前言 1.什么是表格 2.表格的使用范围 二、案例实现 1.案例分析 ①根据需求找到文档源码 ②查询结果在实体中没有该属性 2.dao层编写 ①BaseDao工具类 ②UserDao编写 3.Servlet编写 ①R工具类的介绍 ②Useraction编写 4.jsp页面搭建 ①userManage.jsp  ②userEdit.jsp ③userManage.js ④us

    2024年02月16日
    浏览(48)
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)二:登录界面及对应功能实现

      本章介绍系统登录界面、登录流程、登录接口等相关内容的开发,实现包括账号密码登录、短信验证登录等不同的登录方式,使用svg-capter生成图形验证码,使用expressjwt实现登录token的生成及验证。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击

    2024年02月11日
    浏览(68)
  • 记录使用layui弹窗实现签名、签字

    本来项目使用的是OCX方式做签字的,因为项目需要转到国产化,不在支持OCX方式,需要使用前端进行签字操作 注:有啥问题看看文档,或者换着思路来,本文仅供参考! 获取jSignature 方法一:jSignature官网 方法二:BootCDN 这里面的各种组件库挺全面 如果需要开启撤销 配置如下

    2024年02月09日
    浏览(39)
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)三:找回密码界面及对应功能实现

      本章实现找回密码功能,包括短信验证码找回、邮箱验证码找回等功能,并通过node-send-email发送邮箱验证码,实现找回密码界面、接口等功能。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击下载

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包