视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用layui-tree美化左侧菜单的方法
2020-11-03 19:02:57 责编:小采
文档


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知识请关注layui使用教程栏目。

下载本文
显示全文
专题