使用layui-tree美化左侧菜单,点击生成tab选项

layui-tree美化左侧菜单

  • html

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll " >
            <div id="sidemenubar" lay-filter="test"></div>
        </div>
    </div>
  • css
    /*左侧导航*/
    .layui-tree-skin-sidebar li i{
    color: rgba(255,255,255,.7);
    display: none;
    }
    .layui-tree-skin-sidebar li a cite{
    color: rgba(255,255,255,.7)
    }
    .layui-tree-skin-sidebar li .layui-tree-spread{
    display: block;
    position: absolute;
    right: 30px;
    }
    .layui-tree-skin-sidebar li{
    line-height: 45px;
    position: relative;
    }
    .layui-tree-skin-sidebar li ul{
    margin-left: 0;
    background: rgba(0,0,0,.3);
    }
    .layui-tree-skin-sidebar li ul a{
    padding-left: 20px;
    }
    .layui-tree-skin-sidebar li a{
    height: 45px;
    border-left: 5px solid transparent;
    box-sizing: border-box;
    width: 100%;
    }
    .layui-tree-skin-sidebar li a:hover{
    background: #4E5465;
    color: #fff;
    border-left: 5px solid #009688;
    }
    .layui-tree-skin-sidebar li a.active{
    background: #009688;
    }
  • js
    <!--layui.js文件必须放到HTML内容的最后-->
    <script src="layui/layui.js"></script>
    layui.use([‘element‘,‘layer‘,‘jquery‘,‘tree‘], function(){
    var element = layui.element;
    var layer = layui.layer;
    var $ = layui.jquery;
    var menuData =  [ //节点
            {
                name: ‘常用文件夹‘
                ,id: ‘1‘
                ,children: [
                {
                    name: ‘所有未读‘
                    ,id: ‘11‘
                    ,url: ‘http://www.layui.com/‘
                }, {
                    name: ‘置顶邮件‘
                    ,id: ‘12‘
                }, {
                    name: ‘标签邮件‘
                    ,id: ‘13‘
                }
            ]
            }, {
                name: ‘我的邮箱‘
                ,id: ‘2‘
                ,children: [
                    {
                        name: ‘QQ邮箱‘
                        ,id: ‘21‘
                        ,spread: true
                        ,children: [
                        {
                            name: ‘收件箱‘
                            ,id: ‘211‘
                            ,children: [
                            {
                                name: ‘所有未读‘
                                ,id: ‘2111‘
                            }, {
                                name: ‘置顶邮件‘
                                ,id: ‘2112‘
                            }, {
                                name: ‘标签邮件‘
                                ,id: ‘2113‘
                            }
                        ]
                        }, {
                            name: ‘已发出的邮件‘
                            ,id: ‘212‘
                        }, {
                            name: ‘垃圾邮件‘
                            ,id: ‘213‘
                        }
                    ]
                    }, {
                        name: ‘阿里云邮‘
                        ,id: ‘22‘
                        ,children: [
                            {
                                name: ‘收件箱‘
                                ,id: ‘221‘
                            }, {
                                name: ‘已发出的邮件‘
                                ,id: ‘222‘
                            }, {
                                name: ‘垃圾邮件‘
                                ,id: ‘223‘
                            }
                        ]
                    }
                ]
            }
        ]
    layui.tree({
        elem: ‘#sidemenubar‘ //传入元素选择器
        ,skin: ‘sidebar‘  //自定义tree样式的类名
        ,nodes:menuData  //节点数据
        ,click: function(node,item){
            //node即为当前点击的节点数据,item就是被点击的a标签对象了
            //导航按钮选中当前
            $(‘#sidemenubar a‘).removeClass(‘active‘);
            $(item).addClass(‘active‘);
            $(item).siblings(‘.layui-tree-spread‘).click();
            //添加新tab
            activeTab.init(node.name,node.url,node.id);
        }
    });
    var activeTab = {
        tabTit : ‘‘, //tab titile标题
        tabUrl : ‘‘, //tab内容嵌套iframe的src
        tabId  : ‘‘, //tab 标签的lay-id
        tabCon : function(){
            var result;
            $.ajax({
                type: ‘get‘,
                url: this.tabUrl,
                dataType: ‘html‘,
                success: function(data){
                    result = data;
                }
            })
            return result;
        },
        addTab : function(){ //新增tab项
            element.tabAdd(‘demo‘, {
                title: this.tabTit
                ,content: ‘<iframe src = ‘+this.tabUrl +‘ ></iframe>‘ //支持传入html
                ,id: this.tabId
            })
        },
        changeTab: function(){ //选中tab项
            element.tabChange(‘demo‘, this.tabId);
        },
        ishasTab : function(){ //判断tab项中是否包含
            var _this = this;
            var dataId,isflag;
            var arrays = $(‘.layui-tab-title li‘);
            $.each(arrays,function(idx,ele){
                dataId = $(ele).attr(‘lay-id‘);
                if(dataId === _this.tabId){
                    isflag = true
                    return false
                }else{
                    isflag = false
                }
            })
            return isflag
        },
        init : function(tabtit,taburl,tabid){
            var _this = this;
            _this.tabUrl = taburl;
            _this.tabId = tabid;
            _this.tabTit = tabtit;
            if(taburl){
                if(!_this.ishasTab()){
                    _this.addTab();
                }
                _this.changeTab();
            }else{
                return false
            }
        }
    }
    });

    新增tab项逻辑思路

  • 点击左侧导航,获取它的数据(url,id。。。)
  • 如果有url,则判断其id是否与tab项的lay-id相同,相同则切换选中,不相同则新增

    遇到的问题

    layui-tree 单击节点只返回当前的节点数据,不返回当前节点的HTML对象

    解决方案

  • 更改tree.js 源码

e.children("a").on("click",
                    function(e) {
                        layui.stope(e),
                            i.click(o,this)
                    })
i.click(o)改为 i.click(o,this)
  • 使用

结语

layui的使用刚刚开始,记录所采之坑,采坑继续进行中。。。

原文地址:https://www.cnblogs.com/hukeer/p/8383708.html

时间: 2024-08-29 14:21:50

使用layui-tree美化左侧菜单,点击生成tab选项的相关文章

Layui tree 下拉菜单树

原文地址:https://www.cnblogs.com/yysbolg/p/8968992.html 1.效果: 2.html  代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layui</title> <meta name="renderer" content="webkit">

jquery实现后台系统左侧菜单的点击展开/收缩二级菜单效果

html: <div class="col-sm-3 col-md-2 sidebar"> <div class="totalt"><a>系统管理系统</a></div> <ul class="menu"> <li class="title"> <a class="item item1"><span cla

利用cookie,实现刷新页面跳转,左侧菜单点击后状态保持不变。

是一个后台关系系统,后台是phyton,后台把左侧菜单都是利用a标签进行跳转,导致菜单点击状态在页面刷新后失效,用户体验不好,被要求改掉. 查了一些资料.利用cookie终于搞定了这个大问题.主要利用 cookie记录存值. 代码贴上去,以防忘掉 $(".nav-item li a").click(function(){ $.cookie("navstation", $(this).html(), { path: "/" }); }); var

[原创]React+Ant Design设置左侧菜单导航路由的显示与隐藏(与权限无关)

最近在学习react时,用到了很流行的UI框架Ant Design,也了解了一下Ant Design Pro,发现它们都有导航组件,Ant Design框架的导航菜单在这里,Ant Design Pro是权限菜单,权限菜单简单来说就是根据登录的权限来展示不同的菜单给用户,比如管理员有给用户分配不同角色的权限,那管理员就可以看到系统管理等导航菜单,而用户A只有发布某些业务的权限,那用户A就不能看到系统管理的导航菜单等等.不过这不在我们本文的考虑范围内,有兴趣的同学可以自行去看它的API:Autho

.Net MVC 动态生成LayUI tree

.Net MVC 动态生成LayUI tree 最近在做项目的过程中需要用到Tree插件,所以找了一堆Tree发现LayUI的Tree样式比较好看,所以开始搞! 1.Layui部分 1.1 首先引用文件是必不可少的:(依赖于Jquery) <link type="text/css" rel="Stylesheet" href="~/Content/js/plugins/layui-v2.5.4/layui-v2.5.4/layui/css/layui

SPA项目开发之首页导航+左侧菜单

Mock.js: 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用来提高自动化测试效率. 众所周知Mock.js因为两个重要的特性风靡前端: 数据类型丰富 支持生成随机的文本.数字.布尔值.日期.邮箱.链接.图片.颜色等. 拦截Ajax请求 不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据. 注1:easy-mock,一个在线模拟后台的数据平台 Mo

JavaScript内容梳理 示例之模态对话框 示例之全选和反选以及取消 示例之后台管理左侧菜单

1 <!DOCTYPE html> 2 <!--示例之模态对话框--> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 <style> 8 .hide{ 9 display: none; 10 } 11 .c1{ 12 position: fixed; 13 lef

python : jquery实现左侧菜单

左侧菜单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Title</title> <style> .header{ background-color: black; color: wheat;

python : HTML+CSS (左侧菜单)

左侧菜单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Title</title> <style> .hide{ display: none; } .menu .head{ height:38px