layui這個前端框架對後端人員來講提供了極大的方便,很大一部分同窗在剛接觸到這個框架就火燒眉毛的要動手實踐了,恰好最近須要開發一個後臺管理項目,就拿layui來進行學習和實踐.
尚未接觸到的同窗能夠先通讀一遍文檔,這樣在遇到問題的時候纔可以對症下藥,仔細研究相關的板塊
今天咱們先來學習一下使用layui來實現左側點擊菜單,內容區顯示tabjavascript
html代碼php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title><?php echo $curTitle;?></title> <link rel="stylesheet" href="js/layui/css/layui.css"> </head> <body class="layui-layout-body"> <div class="layui-layout layui-layout-admin"> <div class="layui-header"> <div class="layui-logo">XXXX業務管理平臺</div> <ul class="layui-nav layui-layout-right"> <li class="layui-nav-item"> 歡迎光臨,商戶001 </li> <li class="layui-nav-item"><a href="">安全退出</a></li> </ul> </div> <div class="layui-side layui-bg-black"> <div class="layui-side-scroll"> <!-- 左側垂直導航區域--> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="layui-nav-item"> <a class="" href="javascript:;">管理員管理</a> <dl class="layui-nav-child"> <dd> <a href="javascript:;" data-id="1" data-title="管理員列表" data-url="index.php?&a=adminList" class="site-demo-active" data-type="tabAdd">管理員列表</a></dd> <dd><a href="javascript:;" data-id="2" data-title="管理員日誌" data-url="index.php?&a=adminLogList" class="site-demo-active" data-type="tabAdd">管理員日誌</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">交易管理</a> <dl class="layui-nav-child"> <dd><a href="javascript:;" data-id="" data-id="3" data-title="存款列表" data-url="index.php?&a=adminList" class="site-demo-active" data-type="tabAdd">存款列表</a> </dd> <dd><a href="javascript:;">代付列表</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">系統管理</a> <dl class="layui-nav-child"> <dd><a href="javascript:;">支付API設置</a></dd> <dd><a href="javascript:;">公告設置</a></dd> <dd><a href="javascript:;">控制檯</a></dd> </li> </ul> </div> </div> <!--tab標籤--> <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;"> <ul class="layui-tab-title"></ul> <div class="layui-tab-content"></div> </div> <div class="layui-footer" style="text-align:center;"> <!-- 底部固定區域 --> © sunway.tk XXXX業務管理平臺 </div> </div> <script src="/js/layui/layui.js"></script> <script> <!--這裏是放置js代碼區域--> </script> </body> </html>
javascript代碼:css
layui.use(['element', 'layer', 'jquery'], function () { var element = layui.element; // var layer = layui.layer; var $ = layui.$; // 配置tab實踐在下面沒法獲取到菜單元素 $('.site-demo-active').on('click', function () { var dataid = $(this); //這時會判斷右側.layui-tab-title屬性下的有lay-id屬性的li的數目,即已經打開的tab項數目 if ($(".layui-tab-title li[lay-id]").length <= 0) { //若是比零小,則直接打開新的tab項 active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title")); } else { //不然判斷該tab項是否以及存在 var isData = false; //初始化一個標誌,爲false說明未打開該tab項 爲true則說明已有 $.each($(".layui-tab-title li[lay-id]"), function () { //若是點擊左側菜單欄所傳入的id 在右側tab項中的lay-id屬性能夠找到,則說明該tab項已經打開 if ($(this).attr("lay-id") == dataid.attr("data-id")) { isData = true; } }) if (isData == false) { //標誌爲false 新增一個tab項 active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title")); } } //最後無論是否新增tab,最後都轉到要打開的選項頁面上 active.tabChange(dataid.attr("data-id")); }); var active = { //在這裏給active綁定幾項事件,後面可經過active調用這些事件 tabAdd: function (url, id, name) { //新增一個Tab項 傳入三個參數,分別對應其標題,tab頁面的地址,還有一個規定的id,是標籤中data-id的屬性值 //關於tabAdd的方法所傳入的參數可看layui的開發文檔中基礎方法部分 element.tabAdd('demo', { title: name, content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:99%;"></iframe>', id: id //規定好的id }) FrameWH(); //計算ifram層的大小 }, tabChange: function (id) { //切換到指定Tab項 element.tabChange('demo', id); //根據傳入的id傳入到指定的tab項 }, tabDelete: function (id) { element.tabDelete("demo", id);//刪除 } }; function FrameWH() { var h = $(window).height(); $("iframe").css("height",h+"px"); } });
實現邏輯:動態判斷所點擊的菜單元素,利用元素上設置的data屬性值,在右側內容區生成頁面iframe進行動態顯示
參考文獻:layui官網html