easyui中layout、accordion加tabs实现简单菜单布局实例

一般对于后台界面都是采用BorderLayout进行布局的。BorderLayout也就是将界面分成五块,如下图所示,分别有:NorthEastSouthWestCenter

这里写图片描述

其中比较特殊的是Center这块区域,它是不固定的,会随着四块区域的变化而做出相应的调整。比如将West向左缩小10px,那么Center则会向West方向扩张10px。其实这个easyUI已经帮我们实现好了,我们只需要使用它的layout就可以完成。

<body class="easyui-layout">
       <div data-options="region:'north'" style="height:70px; text-align: center">
           <h1>EasySpring后台管理</h1>
       </div>
       <div data-options="region:'south',split:true" style="height:50px;"></div>
       <div data-options="region:'west',split:true,title:'菜单栏',iconCls:'icon-ok'" style="width:250px;">
           <div class="easyui-accordion" data-options="fit:true,border:false">
               <!-- 这里由于只有一个,所以不设置title-->
               <div data-options="fit:true,collapsible:false" style="padding:10px;"><!-- 每一个div都是accordion中依赖的panel -->
                    <ul class="westBar" id="admin">
                        <li id="adminUser"><span class="icon-search" style="height:16px;width:16px;display:inline-block"></span>用户管理</li>
                        <li id="adminRole"><span class="icon-search" style="height:16px;width:16px;display:inline-block"></span>角色管理</li>
                        <li id="adminPermission"><span class="icon-search" style="height:16px;width:16px;display:inline-block"></span>权限管理</li>
                    </ul>
               </div>
           </div>
       </div>
       <div data-options="region:'center',iconCls:'icon-ok'">
           <div id="admin_tabs" class="easyui-tabs" data-options="fit:true,border:false,plain:true">
           </div>
       </div>
</body>

这里我们将easyui-layout这个class设到<body>标签上,那么就表示对整个页面执行layout。当然也可以对局部的div执行layout。另外这里对于左边的菜单栏运用了accordion组件,accordion中的子级div就代表了每一个滑块,这里我们只用到一个滑块,所以将collapsible设置为false。那么下面就要构建菜单栏中的菜单了,我们用ul+li来进行布局。ok,布局完成,效果应该如下所示(1024 * 768):

这里写图片描述

下面要处理的就是点击菜单后,在center中添加或选中响应的tab了。为了达到便于扩展的目的,我们应该设计一套统一的逻辑:比如这里的accordion下的每个panel都作为一个模块,然后该panel下面的菜单都归属于这个上级panel,那么在url的设置时就有一个关联了,比如模块为admin,菜单为adminUser,那么请求url就是.../admin/adminUser,具体可以看下面的代码:

$(function(){
    $("ul.westBar li").on("click", function(){
        // 添加选中样式
        $("ul.westBar li").removeClass('active');
        $(this).addClass('active');

        var id = $(this).attr('id');
        if($(this).hasClass('zdialog')){ // 这里可以扩展对话框菜单
            $('#' + id + '-dialog').dialog('open');
            return;
        }
        var id = $(this).attr('id');
        var title = $(this).text();
        var iconCls = $(this).find("span").attr('class');
        var parent = $(this).parent().attr('id');
        addTabs(id, title, iconCls, parent);
    })
});

function addTabs(id, title, iconCls, parent){
    if($('#admin_tabs').tabs('exists',title)){ // 处理已打开过的tab
        $('#admin_tabs').tabs('select',title);
        return;
    }
    if(!iconCls){
        iconCls = 'icon-ok';
    }
    $('#admin_tabs').tabs('add',{
        title: title,
        href: contextPath + '/' + parent + '/' + id, // 这里用parent + id来定义url
        iconCls: iconCls,
        closable: true,
        onLoadError:function(data){
            // 这里对于非200状态码的都会加载不出来界面,而需要在这里手动处理
            var tab = $('#admin_tabs').tabs('getSelected');
            var body = tab.panel('body');
            if(data.status == 401){
                body.html(data.responseText)
            }else{
                body.html('<h1>加载出错</h1>');
            }
        }
    });
}
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值