Layui 写一个简单的后台页面

时间:2023-03-09 22:09:05
Layui  写一个简单的后台页面

参考如下:

1、layui 官方文档 http://www.layui.com/doc/

2、https://blog.csdn.net/huyanliang/article/details/77966610

3、http://m.zhengjinfan.cn/(演示地址)http://git.oschina.net/besteasyteam/beginner_admin (下载地址)【在这里学习到原来js可以这么玩】

 <!DOCTYPE html>
 <html>
 <head>
     <meta charset="utf-8">
     <title>后台管理</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
     <link href="Scripts/layui/css/layui.css" rel="stylesheet" />
     <script src="Scripts/layui/layui.js"></script>
     <!-- 注意:如果你直接复制所有代码到本地,上述css、js 路径需要改成你本地的     layui v=2.30 -->
     <style>
         .contextmenu {
             display: none;
             position: absolute;
             width: 110px;
             text-align: center;
             margin: 0;
             padding: 0;
             background: #FFFFFF;
             border-radius: 5px;
             list-style: none;
             box-shadow: 0 15px 35px rgba(50,50,90,0.1), 0 5px 15px rgba(0,0,0,0.07);
             overflow: hidden;
             z-index: 999999;
         }

             .contextmenu li {
                 border-left: 3px solid transparent;
                 transition: ease .2s;
             }

                 .contextmenu li a {
                     display: block;
                     padding: 10px;
                     text-decoration: none;
                     transition: ease .2s;
                 }

                 .contextmenu li:hover {
                     background: #5FB878;
                     border-left: 3px solid #9C27B0;
                 }

                     .contextmenu li:hover a {
                         color: #FFFFFF;
                     }
     </style>
 </head>
 <body>
     <div class="layui-layout layui-layout-admin">
         <div class="layui-header">
             <div class="layui-logo" style="background-color:#ffffff;border-bottom:2px solid #028a3f;border-right:2px solid #b102b9;">后台管理</div>
             <!-- 头部区域(可配合layui已有的水平导航)  -->
             <ul class="layui-nav layui-layout-left">
                 <li class="layui-nav-item nav-suofang">
                     <i class="layui-icon zoom-suofang layui-icon-shrink-right" style="font-size: 30px; color: #ffffff;"></i>
                     <i class="layui-icon size-da-xiao" style="font-size: 30px; color: #ffffff;"></i>
                 </li>
                 <li class="layui-nav-item"><a id="size_"></a></li>
                 <li class="layui-nav-item"><a href=""><i class="layui-icon" style="font-size: 20px; color: #1E9FFF;"></i> &nbsp; 控制台</a></li>
                 <li class="layui-nav-item"><a href="">商品管理</a></li>
                 <li class="layui-nav-item"><a href="">用户</a></li>
                 <li class="layui-nav-item">
                     <a href="javascript:;">其它系统</a>
                     <dl class="layui-nav-child">
                         <dd><a href="">邮件管理</a></dd>
                         <dd><a href="">消息管理</a></dd>
                         <dd><a href="">授权管理</a></dd>
                     </dl>
                 </li>
             </ul>
             <ul class="layui-nav layui-layout-right">
                 <li class="layui-nav-item">
                     <a href="javascript:;">
                         <img src="http://t.cn/RCzsdCq" class="layui-nav-img">
                         贤心
                     </a>
                     <dl class="layui-nav-child">
                         <dd><a href="">基本资料</a></dd>
                         <dd><a href="">安全设置</a></dd>
                     </dl>
                 </li>
                 <li class="layui-nav-item"><a href="">退了</a></li>
             </ul>
         </div>
         <div class="layui-side layui-bg-black">
             <div class="layui-side-scroll" id="admin-scroll">
                 <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
             </div>
         </div>
         <div class="layui-footer" style="border-left:2px solid #b102b9">
             <!-- 底部固定区域 -->
             © layui.com - 底部固定区域
         </div>
         <div class="layui-body" style="border-left:2px solid #b102b9;border-top:2px solid #028a3f;">
             <!--内容显示区域-->
             <div class="layui-tab layui-tab-brief" lay-filter="demo" id="" style="margin:0px;">
                 <ul class="layui-tab-title">
                     <li class="layui-this" lay-id="0">网站设置 </li>
                 </ul>
                 <div class="layui-tab-content" style="padding:2px 0px 0px 5px;height:100%">
                     <div class="layui-tab-item layui-show">
                         <!--主页自己定义一个-->
                         <iframe src="main.html" data-id="0" style="width:100%" frameborder="0"></iframe>
                     </div>
                 </div>
             </div>
         </div>
     </div>
     <script>
         layui.use(['element', 'layer', 'jquery'], function () {
             var $ = layui.jquery
                 , layer = layui.layer
                 , element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块

             //显示与隐藏左侧导航
             $('.zoom-suofang').on('click', function () {
                 var sideWidth = $('.layui-bg-black').width();
                 if (sideWidth === 200) {
                     $('.layui-body').animate({
                         left: '0px'
                     });
                     $('.layui-footer').animate({
                         left: '0px'
                     });
                     $('.layui-bg-black').animate({
                         width: '0px'
                     });
                     $('.zoom-suofang')[0].className = 'layui-icon zoom-suofang layui-icon-spread-left';
                 } else {
                     $('.layui-body').animate({
                         left: '200px'
                     });
                     $('.layui-footer').animate({
                         left: '200px'
                     });
                     $('.layui-bg-black').animate({
                         width: '200px'
                     });
                     $('.zoom-suofang')[0].className = 'layui-icon zoom-suofang layui-icon-shrink-right';
                 }
             });

             //模拟F11全屏
             var bool = true;
             $('.size-da-xiao').on('click', function () {
                 if (bool) {
                     var docElm = document.documentElement;
                     var msg = '按F11或Esc即可退出全屏';
                     //W3C
                     if (docElm.requestFullscreen) {
                         docElm.requestFullscreen();
                     }
                     //FireFox
                     else if (docElm.mozRequestFullScreen) {
                         docElm.mozRequestFullScreen();
                     }
                     //Chrome等
                     else if (docElm.webkitRequestFullScreen) {
                         docElm.webkitRequestFullScreen();
                     }
                     //IE11
                     else if (docElm.msRequestFullscreen) {//ie兼容性不太好所以先不使用
                         //docElm.msRequestFullscreen();
                         msg = 'ie兼容性不太好所以先不使用';
                     }
                     layer.msg(msg);
                     bool = false;
                 } else {
                     var exitMethod = document.exitFullscreen || //W3C
                         document.mozCancelFullScreen ||    //Chrome等
                         document.webkitExitFullscreen || //FireFox
                         document.webkitExitFullscreen; //IE11
                     if (exitMethod) {
                         exitMethod.call(document);
                     }
                     else if (typeof window.ActiveXObject !== "undefined") {//for Internet Explorer
                         var wscript = new ActiveXObject("WScript.Shell");
                         if (wscript !== null) {
                             wscript.SendKeys("{F11}");
                         }
                     }
                     bool = true;
                 }

             });
             //自定义左侧导航数据
             var navtab =
                 [
                     {
                         title: '一级标题1',
                         icon: '',
                         open: true,
                         son:
                             [
                                 { id: 11, title: '百度', icon: '', href: 'http://www.baidu.com' },
                                 { id: 12, title: '好123', icon: '', href: 'http://www.hao123.com' },
                                 { id: 13, title: '测试', icon: '', href: 'index.aspx' },
                             ]
                     },
                     {
                         title: '一级标题2',
                         icon: '',
                         open: false,
                         son:
                             [
                                 { id: 21, title: '博客园', icon: '', href: 'https://www.cnblogs.com/' },
                                 { id: 22, title: 'CSDN', icon: '', href: 'https://www.csdn.net/' }
                             ]
                     }
                 ];
             //左侧导航生成方法
             var getHtml = function (obj) {
                 var htm = '<ul class="layui-nav layui-nav-tree" lay-filter="test">';
                 for (var i = 0; i < obj.length; i++) {
                     if (obj[i].son.length > 0) {//二级不为空
                         htm += obj[i].open ? '<li class="layui-nav-item layui-nav-itemed">' : '<li class="layui-nav-item">';
                         htm += '<a  href="javascript:;">' + obj[i].title + '</a><dl class="layui-nav-child">';
                         for (var j = 0; j < obj[i].son.length; j++) {
                             htm += '<dd class="nav-click" data-id="' + obj[i].son[j].id + '" data-title="' + obj[i].son[j].title + '" data-href="' + obj[i].son[j].href + '" data-icon="' + obj[i].son[j].icon + '"  data-type="tabAdd" ><a href="javascript:;"><i class="layui-icon" style="font-size: 20px; color: #ffffff;">' + obj[i].son[j].icon + '</i> ' + obj[i].son[j].title + '</a></dd>';
                         }
                         htm += '</dl></li>';
                     }
                 }
                 htm += '</ul>';
                 return htm;
             }
             $('#admin-scroll').html(getHtml(navtab));
             element.init();//更新渲染

             var $content = $('.layui-body');//用来获取高度

             //iframe自适应
             $(window).on('resize', function () {
                 $content.find('iframe').each(function () {
                     $(this).height($content.height() - 50);
                 });
             }).resize();
             //只展开一个二级菜单
             $('.layui-bg-black').find('li.layui-nav-item').each(function () {
                 $(this).on('click', function () {
                     $(this).siblings().removeClass('layui-nav-itemed');
                 });
             });
             //触发事件
             var active = {
                 tabAdd: function (othis) {
                     //新增一个Tab项
                     element.tabAdd('demo', {
                         title: '<span class="layui-icon">' + othis.data('icon') + '</span>&nbsp;' + othis.data('title') + '<i class="layui-icon layui-unselect layui-tab-close">ဆ</i>'
                         , content: '<iframe src="' + othis.data('href') + '" data-id="' + othis.data('id') + '" style="width:100%;height:' + ($content.height() - 50) + 'px;" frameborder="0"></iframe>'
                         , id: othis.data('id')
                     });
                     //增加点击关闭事件
                     var r = $(".layui-tab-title").find("li");
                     //每次新打开tab都是最后一个,所以只对最后一个tab添加点击关闭事件
                     r.eq(r.length - 1).children("i").on("click", function () {
                         var closeid = $(this).parent("li").attr('lay-id');
                         //关闭后修改状态,不然下次打不开了
                         $('#admin-scroll').find('dd[data-id=' + closeid + ']')[0].dataset.type = 'tabAdd';

                         element.tabDelete("demo", closeid);

                     }), element.tabChange("demo", othis.data('id'));

                     othis[0].dataset.type = 'tabChange';//打开过后将data-type修改为 tabChange 下次点击就是切换了

                     element.init();//更新全部(全部重新渲染)
                 }
                 , tabChange: function (othis) {
                     //切换到指定Tab项
                     element.tabChange('demo', othis.data('id')); //切换到
                     $('.layui-show')[0].children[0].contentWindow.frames.location.reload(true);//刷新页面 只能刷新自己项目下的网页,其他(百度之类的)会报跨域错误

                 }
             };
             //左侧导航点击监听
             $('.nav-click').on('click', function () {
                 var othis = $(this), type = othis[0].dataset.type;
                 active[type] ? active[type].call(this, othis) : '';
             });
             //选项卡右键事件
             $('.layui-tab-title').contextmenu(function (e) {
                 var posX = e.pageX;
                 var posY = e.pageY;
                 $(".contextmenu").css({
                     "left": posX,
                     "top": posY
                 }).show();
                 return false;//阻止浏览器默认右键点击事件
             });
             $(document.activeElement).click(function () {
                 $(".contextmenu").hide(3000);
             });
             $(".contextmenu").mouseleave(function () {
                 $(".contextmenu").hide(3000);
             });
             //右键显示框点击事件
             $('.reight-key').on('click', function () {
                 var type = $(this).data('type');
                 //layer.msg(type);
                 switch (type) {
                     case 'refresh':
                         var layid = $('li.layui-this')[0].attributes['lay-id'].value;
                         $('.layui-tab-content').find('iframe').each(function (index, element) {
                             if ($(this)[0].attributes['data-id'].value == layid) {
                                 var src = $(this)[0].src;
                                 $(this)[0].src = src;//强制刷新
                                 return false;
                             }
                         });
                         break;
                     case 'close':
                         var layid = $('li.layui-this')[0].attributes['lay-id'].value;
                         if (layid == 0) {
                             layer.msg('首页不允许关闭的');
                             return;
                         }
                         //关闭后修改状态,不然下次打不开了
                         $('#admin-scroll').find('dd[data-id=' + layid + ']')[0].dataset.type = 'tabAdd';
                         element.tabDelete('demo', layid);//删除
                         break;
                     case 'close_other':
                         var layid = $('li.layui-this')[0].attributes['lay-id'].value;
                         var arr = $(".layui-tab-title").find("li");
                         if (arr.length == 1) {
                             layer.msg('没有可关闭的');
                             return;
                         }
                         for (var i = 0; i < arr.length; i++) {
                             var lay_id = arr[i].attributes['lay-id'].value;
                             if (lay_id != 0 && lay_id != layid) {
                                 $('#admin-scroll').find('dd[data-id=' + lay_id + ']')[0].dataset.type = 'tabAdd';
                                 element.tabDelete('demo', lay_id);
                             }
                         }
                         break;
                     case 'close_all':
                         var arr = $(".layui-tab-title").find("li");
                         for (var i = 0; i < arr.length; i++) {
                             var layid = arr[i].attributes['lay-id'].value;
                             if (layid != 0) {
                                 $('#admin-scroll').find('dd[data-id=' + layid + ']')[0].dataset.type = 'tabAdd';
                                 element.tabDelete('demo', layid);
                             }
                         }
                         break;
                 }
             });
         });
     </script>
     <ul class="contextmenu">
         <li><a class="reight-key" data-type="refresh">刷新当前</a></li>
         <li><a class="reight-key" data-type="close">关闭当前</a></li>
         <li><a class="reight-key" data-type="close_other">关闭其他</a></li>
         <li><a class="reight-key" data-type="close_all">全部关闭</a></li>
     </ul>
 </body>
 </html>

Layui  写一个简单的后台页面

往日只是逛逛博客园看看大神神作,无奈水平有限,大部分注释没有,要么就一点,很难理解。

记性一项不好的我只能将写有大部分注释的代码贴在这里,以免后面忘了当初怎么写的(大部分还是东复制西粘贴)