模板简介
模板使用说明(必读)
主题配色问题
关于V5模板中的CSS变量
首页修改地址后刷新不变的问题
顶部导航对应侧边栏菜单切换
侧边栏菜单的JS初始化
iframe子页面刷新问题
iframe版本右侧内容区域404问题
关于非iframe版本菜单高亮
iframe版本的Tab插件相关问题
关于iframe版本里面的加载动画
webuploader使用时候的问题
模板字体图标问题
关于版权和商业用途
模板中固有插件
bootstrap-colorpicker颜色选择
bootstrap-datepicker日期选择
bootstrap-datetimepicker日期时间
bootstrap-maxlength长度验证
bootstrap-select下拉选择
bootstrap-table表格插件
fullcalendar日程插件
jquery-confirm对话框
jquery-tagsinput标签插件
magnific-popup图片查看
webuploader上传插件
bootstrap-notify消息插件
chartjs图表插件
bootstrap.wizard向导插件
perfect-scrollbar滚动条插件
bootstrap-multitabs多标签
moment.js日期处理类
loading插件
popper插件
插件项目包含插件
bootstrap-daterangepicker
material-datetimepicker
dropzone上传
cropper图片裁剪
ckeditor富文本编辑器
editor.md编辑器
summernote富文本编辑器
tinymce富文本编辑器
ueditor富文本编辑器
wangeditor富文本编辑器
jquery-validate表单验证
bootstrap-selectN联动
bootstrap-lyear-select下拉
select2下拉选择框
lyear-dropdowntree下拉树状
ZTree树形菜单
treeview树状插件
jstree树状结构
imgVer拼图滑块
sliderVerification滑块验证
layer弹窗插件
jquery.auto.complete自动填充
fixedheadertable固定表头
fontIconPicker图标选择
jQuery Raty评分插件
jquery.toolbar弹出式工具栏
bootstrap-touchspin输入微调器
插件项目包含示例
表单布局示例
聊天页面示例
logo处使用文字
模态框中使用Tab
模态框最大化
搜索布局
搜索布局2
选择示例
选择示例2
选择示例3
选择示例4
代码演示切换
留言列表布局
布局(数据统计篇)
布局(产品价格篇)
布局(搜索框篇)
布局(用户篇)
布局(动画篇)
布局(其他篇)
另一种侧边栏菜单
顶部和左侧联动
JS初始化菜单
H5上传
侧边栏菜单的JS初始化 - 光年模板(V5)说明文档 - 笔下光年
网站首页
侧边栏菜单的JS初始化
这里直接放出整个页面的代码,主要注意的点是: #### 菜单位置 ```html <nav class="sidebar-main"></nav> ``` 整个菜单,只需留着这一行即可,里面的内容全部删除。 #### index.min.js的位置 ```html <script type="text/javascript" src="js/index.min.js"></script> ``` `index.min.js` 需要放到最后面,因为里面有tab插件的初始化,需要在菜单初始化后,获取首页菜单的链接地址。 #### 页面代码 ```html <!DOCTYPE html> <html lang="zh"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui"> <meta name="keywords" content="LightYear,LightYearAdmin,光年,后台模板,后台管理系统,光年HTML模板"> <meta name="description" content="Light Year Admin V5是一个基于Bootstrap v5.1.3的后台管理系统的HTML模板。"> <meta name="author" content="yinq"> <title>首页 - 光年(Light Year Admin V5)后台管理系统模板</title> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <link rel="stylesheet" type="text/css" href="css/materialdesignicons.min.css"> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="css/animate.min.css"> <link rel="stylesheet" type="text/css" href="js/bootstrap-multitabs/multitabs.min.css"> <link rel="stylesheet" type="text/css" href="css/style.min.css"> </head> <body class="lyear-index"> <div class="lyear-layout-web"> <div class="lyear-layout-container"> <!--左侧导航--> <aside class="lyear-layout-sidebar"> <!-- logo --> <div id="logo" class="sidebar-header"> <a href="index.html"><img src="images/logo-sidebar.png" title="LightYear" alt="LightYear" /></a> </div> <div class="lyear-layout-sidebar-info lyear-scroll"> <nav class="sidebar-main"></nav> <div class="sidebar-footer"> <p class="copyright"> <span>Copyright © 2022. </span> <a target="_blank" href="http://www.bixiaguangnian.com">笔下光年</a> <span> All rights reserved.</span> </p> </div> </div> </aside> <!--End 左侧导航--> <!--头部信息--> <header class="lyear-layout-header"> <nav class="navbar"> <div class="navbar-left"> <div class="lyear-aside-toggler"> <span class="lyear-toggler-bar"></span> <span class="lyear-toggler-bar"></span> <span class="lyear-toggler-bar"></span> </div> </div> <ul class="navbar-right d-flex align-items-center"> <!--顶部消息部分--> <li class="dropdown dropdown-notice"> <!-- // 这里省略了 顶部消息 的代码 // --> </li> <!--End 顶部消息部分--> <!--切换主题配色--> <li class="dropdown dropdown-skin"> <!-- // 这里省略了 配色 的代码 // --> </li> <!--End 切换主题配色--> <!--个人头像内容--> <li class="dropdown"> <!-- // 这里省略了 个人头像内容 的代码 // --> </li> <!--End 个人头像内容--> </ul> </nav> </header> <!--End 头部信息--> <!--页面主要内容--> <main class="lyear-layout-content"> <div id="iframe-content"></div> </main> <!--End 页面主要内容--> </div> </div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/popper.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/perfect-scrollbar.min.js"></script> <script type="text/javascript" src="js/bootstrap-multitabs/multitabs.min.js"></script> <script type="text/javascript" src="js/jquery.cookie.min.js"></script> <script type="text/javascript"> // 使用 var menu_list = [{"id":"1","name":"后台首页","url":"lyear_main_1_v5.html","pid":0,"icon":"mdi mdi-home","is_out":0,"is_home":1},{"id":"2","name":"布局示例","url":"#!","pid":0,"icon":"mdi mdi-palette","is_out":0,"is_home":0},{"id":"3","name":"表单布局示例","url":"lyear_layout_form.html","pid":2,"icon":"","is_out":0,"is_home":0},{"id":"4","name":"聊天页面示例","url":"lyear_layout_chat.html","pid":2,"icon":"","is_out":0,"is_home":0},{"id":"5","name":"logo处使用文字","url":"lyear_layout_logo_text.html","pid":2,"icon":"","is_out":1,"is_home":0},{"id":"6","name":"多级菜单","url":"#!","pid":0,"icon":"mdi mdi-menu","is_out":0,"is_home":0},{"id":"7","name":"一级菜单","url":"#!","pid":6,"icon":"","is_out":0,"is_home":0},{"id":"8","name":"一级菜单","url":"#!","pid":6,"icon":"","is_out":0,"is_home":0},{"id":"9","name":"二级菜单","url":"#!","pid":8,"icon":"","is_out":0,"is_home":0},{"id":"10","name":"二级菜单","url":"#!","pid":8,"icon":"","is_out":0,"is_home":0},{"id":"11","name":"三级菜单","url":"#!","pid":10,"icon":"","is_out":0,"is_home":0},{"id":"12","name":"三级菜单","url":"#!","pid":10,"icon":"","is_out":0,"is_home":0}]; setSidebar(menu_list); /** * 菜单 * @param data 菜单JSON数据 * id 菜单唯一ID * name 菜单名称 * url 菜单链接地址 * icon 图标 * pid 父级ID * is_out 是否外链0否|1是,外链a标签没有class='multitabs' * is_home 是否首页 */ function setSidebar(data){ if (data.length == 0) return false; var treeObj = getTrees(data, 0, 'id', 'pid', 'children'); html = createMenu(treeObj, true); $('.sidebar-main').append(html); } function createMenu(data, is_frist) { var menu_body = is_frist ? '<ul class="nav-drawer">' : '<ul class="nav nav-subnav">'; for(var i = 0; i < data.length; i++){ iframe_class = data[i].is_out == 1 ? 'target="_blank"' : 'class="multitabs"'; icon_div = data[i].pid == 0 ? '<i class="' + data[i].icon + '"></i>' : ''; selected = (data[i].pid == 0) && (data[i].is_home == 1) ? 'active' : ''; menuName = data[i].pid == 0 ? '<span>' + data[i].name + '</span>' : data[i].name; homeIdName = (data[i].pid == 0) && (data[i].is_home == 1) ? 'id="default-page"' : ''; if (data[i].children && data[i].children.length > 0) { menu_body += '<li class="nav-item nav-item-has-subnav"><a href="javascript:void(0)">' + icon_div + menuName + '</a>'; menu_body += createMenu(data[i].children); } else { menu_body += '<li class="nav-item ' + selected + '"><a href="' + data[i].url + '" '+ iframe_class + homeIdName + '>' + icon_div + menuName + '</a>'; } menu_body += '</li>'; } menu_body += '</ul>'; return menu_body; }; /** * 树状的算法 * @params list 代转化数组 * @params parentId 起始节点 * @params idName 主键ID名 * @params parentIdName 父级ID名称 * @params childrenName 子级名称 * @author CSDN博主「伤包子」 */ function getTrees(list, parentId, idName, parentIdName, childrenName) { let items= {}; // 获取每个节点的直属子节点,*记住是直属,不是所有子节点 for (let i = 0; i < list.length; i++) { let key = list[i][parentIdName]; if (items[key]) { items[key].push(list[i]); } else { items[key] = []; items[key].push(list[i]); } } return formatTree(items, parentId, idName, childrenName); } /** * 利用递归格式化每个节点 */ function formatTree(items, parentId, idName, childrenName) { let result = []; if (!items[parentId]) { return result; } for (let t in items[parentId]) { items[parentId][t][childrenName] = formatTree(items, items[parentId][t][idName], idName, childrenName) result.push(items[parentId][t]); } return result; } </script> <!--这里将index.min.js放到最后,这样初始化菜单后再执行tab插件--> <script type="text/javascript" src="js/index.min.js"></script> </body> </html> ``` > 该代码文件可在插件项目中找到。
上一篇:
顶部导航对应侧边栏菜单切换
下一篇:
iframe子页面刷新问题