模板简介
模板使用简要说明
主题配色及保存
顶部导航对应侧边栏菜单切换
侧边栏菜单的JS初始化
点击侧边栏刷新
iframe版本右侧内容区域404问题
关于非iframe版本菜单高亮
iframe版本子页面内新建TAB
iframe中操作当前Tabs
iframe页面内的loading
多标签页(Multitabs)插件说明
关于multitabs的一些调整
调整左侧的宽度
webuploader使用时候的问题
关于模板的默认主题或者配色
关于模板的字体图标问题
关于版权和商业用途
模板中固有的插件
光年模板的loading和消息(v3)
rangeSlider滑块(v3)
bootstrap-datepicker日期(v3)
bootstrap-datepicker日期(v4)
bootstrap-datetimepicker日期时间(v3)
bootstrap-datetimepicker日期时间(v4)
perfect-scrollbar滚动条
Chart.js图表
bootstrap-colorpicker颜色选择
jquery-confirm对话框
jquery.tagsinput标签
bootstrap-notify消息(v4)
chosen.jquery关联选择
jquery.bootstrap.wizard向导
clockpicker时间选择(v4)
bootstrap-maxlength长度验证(v4)
bootstrap-select下拉选择(v4)
fullcalendar日程(v4)
bootstrap-table表格插件
插件项目包含插件
Date Range Picker时间段选择
material风格时间选择器
dropzone上传
uploadify上传
webuploader上传
H5图片上传
cropper图片裁剪
ckeditor富文本编辑器
editor.md编辑器
summernote富文本编辑器
tinymce富文本编辑器
ueditor富文本编辑器
wangeditor富文本编辑器
bootstrap-validate表单验证
jquery-validate表单验证
bootstrap-select下拉选择
bootstrap-selectN联动
bootstrap-lyear-select下拉
select2下拉
bootstrap-multiselect下拉多选
lyear-dropdowntree下拉树状
ZTree树形菜单
treeview树状插件
jstree树状结构
imgVer拼图滑块
sliderVerification滑块验证
bootstrap3-dialog模态框
layer弹窗
jquery.auto.complete自动填充
fixedheadertable固定表头
fontIconPicker图标选择
fullcalendar日程
jQuery Raty评分
lyear.loading加载
Bootstrap MaxLength长度验证
jquery.toolbar弹出式工具栏
jquery.bootstrap-touchspin输入框微调
插件项目包含示例
表单布局示例
聊天页面示例
logo处使用文字
模态框中使用Tab选项卡
模态框最大化
顶部消息示例
搜索布局
搜索布局2
搜索布局3
侧滑边栏区域
选择示例
选择示例2
选择示例3
代码演示切换
留言列表布局
数据统计布局
产品价格布局
搜索框
用户头像篇
动画篇
其他篇
另一种侧边栏菜单
顶部导航对应侧边栏菜单切换 - 光年模板说明文档 - 笔下光年
网站首页
顶部导航对应侧边栏菜单切换
有小伙伴提到了在顶部导航增加几个导航,点击导航左侧显示对应的菜单,普通版本可以增加url的参数,根据参数输出不同的左侧菜单,这里就不细说,主要说一下iframe版本的大概写法。 其实也改动不大,并不难,这里主要讲v3。(v4拉倒最下面看演示示例) 1、首先,把左侧菜单处理下,以模板项目里面的菜单为例,这里把它拆成三份。如下: ```html <nav class="sidebar-main"> <ul class="nav nav-drawer" id="menus-1"> <!--默认菜单内容--> <li class="nav-item active"> <a class="multitabs" href="lyear_main.html"><i class="mdi mdi-home"></i> <span>后台首页</span></a> </li> <li class="nav-item nav-item-has-subnav"> <a href="javascript:void(0)"><i class="mdi mdi-palette"></i> <span>UI 元素</span></a> <ul class="nav nav-subnav"> <li> <a class="multitabs" href="lyear_ui_buttons.html">按钮</a> </li> <li> <a class="multitabs" href="lyear_ui_cards.html">卡片</a> </li> <li> <a class="multitabs" href="lyear_ui_grid.html">格栅</a> </li> <li> <a class="multitabs" href="lyear_ui_icons.html">图标</a> </li> <li> <a class="multitabs" href="lyear_ui_tables.html">表格</a> </li> <li> <a class="multitabs" href="lyear_ui_modals.html">模态框</a> </li> <li> <a class="multitabs" href="lyear_ui_tooltips_popover.html">提示 / 弹出框</a> </li> <li> <a class="multitabs" href="lyear_ui_alerts.html">警告框</a> </li> <li> <a class="multitabs" href="lyear_ui_pagination.html">分页</a> </li> <li> <a class="multitabs" href="lyear_ui_progress.html">进度条</a> </li> <li> <a class="multitabs" href="lyear_ui_tabs.html">标签页</a> </li> <li> <a class="multitabs" href="lyear_ui_typography.html">排版</a> </li> <li> <a class="multitabs" href="lyear_ui_step.html">步骤</a> </li> <li> <a class="multitabs" href="lyear_ui_other.html">其他</a> </li> </ul> </li> <li class="nav-item nav-item-has-subnav"> <a href="javascript:void(0)"><i class="mdi mdi-format-align-justify"></i> <span>表单</span></a> <ul class="nav nav-subnav"> <li> <a class="multitabs" href="lyear_forms_elements.html">基本元素</a> </li> <li> <a class="multitabs" href="lyear_forms_radio.html">单选框</a> </li> <li> <a class="multitabs" href="lyear_forms_checkbox.html">复选框</a> </li> <li> <a class="multitabs" href="lyear_forms_switch.html">开关</a> </li> </ul> </li> </ul> <ul class="nav nav-drawer collapse" id="menus-2"> <!--第三个菜单内容--> <li class="nav-item nav-item-has-subnav"> <a href="javascript:void(0)"><i class="mdi mdi-file-outline"></i> <span>示例页面</span></a> <ul class="nav nav-subnav"> <li> <a class="multitabs" href="lyear_pages_doc.html">文档列表</a> </li> <li> <a class="multitabs" href="lyear_pages_gallery.html">图库列表</a> </li> <li> <a class="multitabs" href="lyear_pages_config.html">网站配置</a> </li> <li> <a class="multitabs" href="lyear_pages_rabc.html">设置权限</a> </li> <li> <a class="multitabs" href="lyear_pages_add_doc.html">新增文档</a> </li> <li> <a class="multitabs" href="lyear_pages_guide.html">表单向导</a> </li> <li> <a class="multitabs" href="lyear_pages_data_table.html">表格插件</a> </li> <li> <a href="lyear_pages_login.html" target="_blank">登录页面</a> </li> <li> <a href="lyear_pages_error.html" target="_blank">错误页面</a> </li> </ul> </li> </ul> <ul class="nav nav-drawer collapse" id="menus-3"> <!--第三个菜单内容--> <li class="nav-item nav-item-has-subnav"> <a href="javascript:void(0)"><i class="mdi mdi-language-javascript"></i> <span>JS 插件</span></a> <ul class="nav nav-subnav"> <li> <a class="multitabs" href="lyear_js_datepicker.html">日期选取器</a> </li> <li> <a class="multitabs" href="lyear_js_sliders.html">滑块</a> </li> <li> <a class="multitabs" href="lyear_js_colorpicker.html">选色器</a> </li> <li> <a class="multitabs" href="lyear_js_chartjs.html">Chart.js</a> </li> <li> <a class="multitabs" href="lyear_js_jconfirm.html">对话框</a> </li> <li> <a class="multitabs" href="lyear_js_tags_input.html">标签插件</a> </li> <li> <a class="multitabs" href="lyear_js_notify.html">通知消息</a> </li> </ul> </li> <li class="nav-item nav-item-has-subnav"> <a href="javascript:void(0)"><i class="mdi mdi-menu"></i> <span>多级菜单</span></a> <ul class="nav nav-subnav"> <li> <a href="#!">一级菜单</a> </li> <li class="nav-item nav-item-has-subnav"> <a href="#!">一级菜单</a> <ul class="nav nav-subnav"> <li> <a href="#!">二级菜单</a> </li> <li class="nav-item nav-item-has-subnav"> <a href="#!">二级菜单</a> <ul class="nav nav-subnav"> <li> <a href="#!">三级菜单</a> </li> <li> <a href="#!">三级菜单</a> </li> </ul> </li> </ul> </li> <li> <a href="#!">一级菜单</a> </li> </ul> </li> </ul> </nav> ``` 代码中 `id="menus-*"` ,叫什么自己定义即可,后面的菜单内容加上 `collapse` 隐藏。 2、其次,添加顶部导航,这里放到 `topbar-left` 里面(v4的版本是 `navbar-left`)。 ```html <div class="topbar-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 class="dropdown"> <span class="header-icon-menu" data-toggle="dropdown"><i class="mdi mdi-apps"></i></span> <ul class="nav navbar-nav dropdown-menu icon-menu-ul"> <li class="active"><a href="javascript:void(0)" onclick="showMenus(this, 1)">默认</a></li> <li><a href="javascript:void(0)" onclick="showMenus(this, 2)">菜单一</a></li> <li><a href="javascript:void(0)" onclick="showMenus(this, 3)">菜单二</a></li> </ul> </div> </div> ``` 3、菜单上有 `onclick` 事件,对应的方法如下: ```javascript function showMenus(obj, id) { $('.sidebar-main .nav-drawer').slideUp('slow'); $('#menus-'+id).slideDown('slow'); $(obj).parent('li').addClass('active').siblings().removeClass('active'); $('.lyear-layout-sidebar-scroll').animate({scrollTop: 0}, 300); // 处理滚动条到最上方 } ``` 4、针对顶部菜单,还需要写一些响应式的样式,避免在手机上的错位 ```css .topbar-left .navbar-nav { margin: 0px; } .topbar-left .navbar-nav a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } .topbar-left .navbar-nav a i { display: none; } .topbar-left .navbar-nav li { float: left; } @media screen and (max-width: 980px) { .header-icon-menu { display: block; height: 68px; line-height: 68px; font-size: 1.5em; cursor: pointer; padding: 0 12px; text-align: center; } .topbar-left .icon-menu-ul li { float: none; } } @media (min-width: 980px) { .header-icon-menu { display: none; } .topbar-left .navbar-nav.dropdown-menu { display: block; position: inherit; box-shadow: none; background-color: transparent; } [data-headerbg*='color_'] .topbar-left .navbar-nav a { color: rgba(255, 255, 255, .75); } [data-headerbg*='color_'] .topbar-left .navbar-nav a:focus, [data-headerbg*='color_'] .topbar-left .navbar-nav a:hover { color: #fff; } [data-headerbg*='color_'] .topbar-left .navbar-nav>.active>a, [data-headerbg*='color_'] .topbar-left .navbar-nav>.active>a:focus, [data-headerbg*='color_'] .topbar-left .navbar-nav>.active>a:hover { background-color: rgba(255,255,255,.125); color: #fff; } } ``` 5、这里还需要对tab插件做一些简单的修改,找到 `bootstrap-multitabs/multitabs.js`,新增js代码(大概567行): ```javascript $('.nav-drawer').find('li').removeClass('active'); $navObj.parent('li').addClass('active'); $navHasSubnav.first().addClass('active'); // 下面是新增的代码,别复制错了 var $thisDrawer = $navHasSubnav.parent('.nav-drawer'), $thisDrawerId = $thisDrawer.attr('id'), $thisIdArr = $thisDrawerId.split('-'); $.each($('.nav-drawer'), function (i, v) { var $thisUl = $(v); if ($thisUl.attr('id') == $thisDrawerId) { $thisDrawer.stop(true, true).show(); } else { $thisUl.slideUp('500'); } }); $.each($('.navbar-nav li'), function (inx, ve) { var $thisLi = $(ve); $thisLi.removeClass('active'); if ((inx+1) == $thisIdArr[1]) { $thisLi.addClass('active'); } }) // 上面是新增的代码,别复制错了 // 当前菜单无子菜单 if (!$navObj.parents('.nav-item').first().is('.nav-item-has-subnav')) { var hht = 48 * ( $navObj.parents('.nav-item').first().prevAll().length - 1 ); $('.lyear-layout-sidebar-scroll').animate({scrollTop: hht}, 300); } // 另外还要注意这里的一句代码(复制了上面的代码后是595行),增加了一个stop(false, true) var $sideDownObj = $navObj.parents('ul.nav-subnav').stop(false, true).filter(':hidden'); ``` > 如果你使用的是 .min.js 的压缩文件,请在修改完后自行压缩到 .min.js 文件当中。 效果图如下: ![](http://www.itshubao.com/uploads/images/20190727/93bde4ff091b288eb40fb3cdd59735f9.gif) [点击查看V3的演示示例](http://example.itshubao.com/example/165.html "点击查看V3的演示示例") ### V4跟上面的代码稍微有一些不同,这里摘抄出来了,具体内容大家看演示 [点击查看V4的演示示例](http://example.itshubao.com/example/418.html "点击查看V4的演示示例") ![](/uploads/images/20230209/03e30f95e36d822cf378eb286dd41010.gif) 1、v4的版本同样需要对tab插件做一些简单的修改,找到 `bootstrap-multitabs/multitabs.js`,新增js代码(大概570行): ```javascript $('.nav-drawer').find('li').removeClass('active'); $navObj.parent('li').addClass('active'); $navHasSubnav.addClass('active'); // 下面是新增的代码,别复制错了 var $thisDrawer = $navHasSubnav.parent('.nav-drawer'), $thisDrawerId = $thisDrawer.attr('id'), $thisIdArr = $thisDrawerId.split('-'); $.each($('.nav-drawer'), function (i, v) { var $thisUl = $(v); if ($thisUl.attr('id') == $thisDrawerId) { $thisDrawer.stop(true, true).show(); } else { $thisUl.slideUp('500'); } }); $.each($('.lyear-topbar li'), function (inx, ve) { var $thisLi = $(ve); $thisLi.removeClass('active'); if ((inx+1) == $thisIdArr[1]) { $thisLi.addClass('active'); } }) // 上面是新增的代码,别复制错了 // 当前菜单无子菜单 if (!$navObj.parents('.nav-item').first().is('.nav-item-has-subnav')) { var hht = 48 * ( $navObj.parents('.nav-item').first().prevAll().length - 1 ); $('.lyear-layout-sidebar-info').animate({scrollTop: hht}, 300); } // 另外还要注意这里的一句代码(复制了上面的代码后是597行),增加了一个stop(false, true) var $sideDownObj = $navObj.parents('ul.nav-subnav').stop(false, true).filter(':hidden'); ``` > 如果你使用的是 .min.js 的压缩文件,请在修改完后自行压缩到 .min.js 文件当中。 2、这里是菜单内容,有一个地方要注意的是,第一行代码,比v4原版的多了一个 `class` 类 `align-items-center`,一定要注意别遗漏了。 ```html <div class="navbar-left d-flex align-items-center"> <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 class="dropdown"> <span class="header-icon-menu" data-toggle="dropdown"><i class="mdi mdi-apps"></i></span> <ul class="lyear-topbar dropdown-menu"> <li class="dropdown-item nav-item active"> <a class="nav-link" href="javascript:void(0)" onclick="showMenus(this, 1)">默认</a> </li> <li class="dropdown-item nav-item"> <a class="nav-link" href="javascript:void(0)" onclick="showMenus(this, 2)">菜单一</a> </li> <li class="dropdown-item nav-item"> <a class="nav-link" href="javascript:void(0)" onclick="showMenus(this, 3)">菜单二</a> </li> </ul> </div> </div> ```
上一篇:
主题配色及保存
下一篇:
侧边栏菜单的JS初始化