jQuery EasyUI 布局 – 在面板中创建复杂布局

jQuery EasyUI 布局 – 在面板中创建复杂布局

jQuery EasyUI 支持布局的嵌套(nested layout),允许在 panel(面板)或其他区域内放置另一个 easyui-layout,从而构建非常复杂的界面布局。这种方式常用于创建自定义组件、模拟 MSN 消息框、复杂表单、仪表盘子模块等。

官方教程参考:https://www.jeasyui.com/tutorial/layout/panel.php(Complex layout on Panel)
在线 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=Layout&pitem=Complex+Layout

本教程将演示:

  • 在一个主 panel 内嵌套 layout
  • 创建类似 MSN 消息框的复杂布局:顶部搜索栏 + 右侧头像,中间可拖动分割的联系人列表 + 聊天区。

步骤 1: 引入 EasyUI 资源

<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/icon.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>

步骤 2: 创建主 Panel 并嵌套 Layout

使用 fit:true 让内部 layout 自动填充 panel。

<div class="easyui-panel" title="复杂面板布局示例(模拟消息框)" iconCls="icon-search"
     collapsible="true" style="width:600px;height:400px;padding:10px;">
    <div class="easyui-layout" data-options="fit:true">

        <!-- 北部:搜索栏 + 右侧头像 -->
        <div data-options="region:'north',border:false" style="height:60px;padding:10px;">
            <div style="float:left;">
                <label>搜索:</label>
                <input class="easyui-searchbox" style="width:200px;">
            </div>
            <div style="float:right;">
                <img src="https://www.jeasyui.com/tutorial/layout/images/man.png" style="width:40px;height:40px;">
            </div>
            <div style="clear:both;"></div>
        </div>

        <!-- 中部:可拖动分割的左右区域 -->
        <div data-options="region:'center'">
            <div class="easyui-layout" data-options="fit:true">

                <!-- 左侧:联系人列表(可折叠) -->
                <div data-options="region:'west',split:true,title:'联系人',iconCls:'icon-group'" style="width:200px;">
                    <ul class="easyui-tree">
                        <li iconCls="icon-user">张三</li>
                        <li iconCls="icon-user">李四</li>
                        <li iconCls="icon-user">王五</li>
                        <li iconCls="icon-user">赵六</li>
                    </ul>
                </div>

                <!-- 右侧:聊天内容区 -->
                <div data-options="region:'center',title:'聊天窗口'">
                    <div class="easyui-tabs" data-options="fit:true,border:false">
                        <div title="与 张三 聊天" style="padding:20px;">
                            这里是聊天内容区域...<br><br>
                            可以放置文本框、发送按钮等。
                        </div>
                        <div title="群聊"></div>
                    </div>
                </div>

            </div>
        </div>

        <!-- 南部:状态栏(可选) -->
        <div data-options="region:'south',border:false" style="height:30px;text-align:center;line-height:30px;background:#fafafa;">
            在线状态:在线
        </div>

    </div>
</div>

步骤 3: 更复杂的嵌套示例(多层布局)

在中心区域再嵌套一层 layout,实现更多分割。

<div class="easyui-panel" title="多层嵌套复杂布局" style="width:800px;height:500px;">
    <div class="easyui-layout" data-options="fit:true">
        <div data-options="region:'west',split:true,title:'左侧菜单'" style="width:200px;">
            <!-- 左侧可放置 accordion 或 tree -->
            <div class="easyui-accordion" data-options="fit:true">
                <div title="菜单1">内容1</div>
                <div title="菜单2">内容2</div>
            </div>
        </div>
        <div data-options="region:'center'">
            <!-- 中心再嵌套一层 -->
            <div class="easyui-layout" data-options="fit:true">
                <div data-options="region:'north'" style="height:100px;background:#f0f0f0;padding:10px;">
                    顶部工具栏
                </div>
                <div data-options="region:'center'">
                    <div class="easyui-tabs" data-options="fit:true">
                        <div title="Tab1">主内容区</div>
                        <div title="Tab2">数据表格</div>
                    </div>
                </div>
                <div data-options="region:'south'" style="height:50px;background:#f0f0f0;padding:10px;">
                    底部状态栏
                </div>
            </div>
        </div>
    </div>
</div>

关键说明

  • 嵌套核心:在 panel 或 layout 的某个 region 内,再放一个 <div class="easyui-layout" data-options="fit:true">,即可实现无限嵌套。
  • fit:true:非常重要,让内层 layout 自动填充外层区域。
  • split:true:允许用户拖动边框调整大小。
  • 优势:无需 JavaScript 代码,仅用 HTML 标记即可构建复杂界面,EasyUI 自动处理渲染和自适应。
  • 常见应用
  • 自定义对话框/窗口(window/dialog 内嵌套 layout)。
  • 仪表盘(多个 panel 内嵌套 layout + charts)。
  • 复杂表单(顶部工具栏 + 左右分割编辑区)。

更多示例:

  • 官方复杂面板布局:https://www.jeasyui.com/tutorial/layout/panel.php
  • 嵌套布局 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=Layout&pitem=Complex+Layout
  • 窗口内嵌套布局:https://www.jeasyui.com/tutorial/win/win3.php

如果需要 XP 风格左侧面板、动态加载内容、或结合 datagrid/tabs 的更复杂示例,请提供更多要求!

文章已创建 3247

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部