每次在毕业答辩会上,看到同专业的同学只要是XXX管理系统,就是下图所示的界面,看来这中布局还是很受欢迎的(偷笑)。接下来进入我们正题,在web项目无论是前端还是后台管理比较常见的布局就是Top-Left-Main。如图所示:

  在平常的接触中,也见到了很多类似的前端框架,例如smartadmin,bootstrap-admin等,在今天我给大家介绍一种更加简洁的构建方式。

  项目源码地址:https://github.com/zhangxy1035/extjs

  参考资料:http://extjs-doc-cn.github.io/ext4api/#!/api

  项目展示:

  在该项目中界面界面的分类布局都是使用的extjs的panel完成的,主要代码如下:

     //顶部
var topPanel = Ext.create('Ext.panel.Panel',{
region:'north',///指定top方向
border:false,
height:,
contentEl:'top',//在网页中需要用id进行接收
margins:'0 0 0 0'
});

  本身来讲大家所看到的left面板其实就是extjs中所提到的树,接下来,我们将具体谈谈如何生成这棵树。

  官方代码如下: 

 var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
children: [
{ text: "detention", leaf: true },
{ text: "homework", expanded: true, children: [
{ text: "book report", leaf: true },
{ text: "alegrbra", leaf: true}
] },
{ text: "buy lottery tickets", leaf: true }
]
}
}); Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: ,
height: ,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});

  其实在上述代码中,主要就是创建了一个树的数据源,然后加载到面板中,在传递到页面中显示。

  然而在本项目中,由于具体的需求,显示了一颗树上的两个叶子,并且为两个叶子的跳转增加了函数。具体代码如下:

 Ext.onReady(function(){
//顶部
var topPanel = Ext.create('Ext.panel.Panel',{
region:'north',///指定top方向
border:false,
height:80,
contentEl:'top',//在网页中需要用id进行接收
margins:'0 0 0 0'
}); //中间
var centerPanel = Ext.create('Ext.tab.Panel',{
region:'center',
contentEl:'contentIframe',
id:'mainContent',
items:[{title:'首页'}]
}); //创建模型
Ext.define('Menu', {
extend: 'Ext.data.Model',
fields: [
{name: 'text', type: 'string'},
{name: 'url', type: 'string'}
]
}); //创建数据(树的数据)
var info1 = {
text:'信息1',
leaf:true,
url:'../src/test1.html'
};
var info2 = {
text:'信息2',
leaf:true,
url:'../src/test2.html'
}; //创建数据源
var menuStore = Ext.create('Ext.data.TreeStore',{
model:'Menu',
proxy:{
type:'memory',
data:[info1,info2]
},
root:{
text:'首页',
leaf:false,
expanded:true
}
}); //创建树菜单
var menuTree = Ext.create('Ext.tree.Panel',{
border:false,
store:menuStore,
hrefTarget:'mainContent',
useArrows:false,
listeners:{
itemclick:function(view,rec,item,index,e){
if(rec.get('leaf')) {
changePage(rec.get('url'),rec.get('text'));
}
}
}
}); //切换内容
function changePage(url,title) {
var index = centerPanel.items.length;
//tab不超过2个
if(index==2) {
//索引从0开始
centerPanel.remove(1);
}
//动态添加tab
var tabPage = centerPanel.add({
title:title,
closable:true
});
//设置显示当前的tab
centerPanel.setActiveTab(tabPage);
Ext.getDom('contentIframe').src=url;
} // //左边
var westPanel = Ext.create('Ext.panel.Panel',{
region:'west',
layout:'accordion',
width:200,
title:'菜单选项',
collapsible:true,
margins:'0 5px 0 0',
items:[menuTree]
}); //通过viewport显示出来
Ext.create('Ext.container.Viewport',{
layout:'border',
items:[topPanel,centerPanel,westPanel]
}); });

  接下来在页面中进行引用:

 <div id="top">
<img src="../img/top.png" style="width: 1763px"/>
</div>
<iframe id="contentIframe" name="contentIframe" style="height:100%;width:100%" frameborder="0"></iframe>

  关于叶子节点的页面就可以自己编写,至此项目构建完成,其中还有一些较为详细的点没有提出,例如需要引入extjs等。大家可以再https://github.com/zhangxy1035/extjs上看源码。然后构建自己的项目。

使用Extjs组件实现Top-Left-Main布局并且增加事件响应的更多相关文章

  1. ExtJS 4.2 教程-08:布局系统详解

    ExtJS 4.2 系列教程导航目录: ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 教程-02:bootstrap.js 工作方式 ExtJS 4.2 教程-03:使用 ...

  2. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  3. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  4. Element 2 组件源码剖析之布局容器

    0x00 简介 前文分析过组件的 布局栅格化(Grid Layout) ,通过基础的 24 分栏,迅速简便地创建布局. 本文将介绍用于布局的容器组件,使用 Flexbox 功能将其所控制区域设定为特定 ...

  5. Container容器控件的使用、Hbox与Vbox布局管理器的使用、以及AjaxAction前后台事件响应

    1.由于有前后台交互功能,需要在Spring上下文中注册一个用于提供服务的bean,对于这个bean使用Spring提供的@Component标注,如果需要使用@Component注解,需要在项目中W ...

  6. 基于Vue的事件响应式进度条组件

    写在前面 找了很多Vue 进度条组件!,都不包含拖拽和点击事件,input range倒是原生包含input和change事件,但是直接基于input range做进度条的话,样式部分需要做大量调整和 ...

  7. Unity Event Trigger 事件响应(二维,三维)添加组件

    EventTrigger 上主要的方法有PointerEnter.PointerExit.PointerDown.PointerUp.PointerClick............都会显示在面板上面 ...

  8. ExtJS中layout的12种布局风格

    总览 extjs的容器组件都可以设置它的显示风格,它的有效值有 1. absolute,2. accordion, 3. anchor, 4. border, 5. card, 6. column, ...

  9. 第34天学习打卡(GUI编程之组件和容器 frame panel 布局管理 事件监听 多个按钮共享一个事件 )

    GUI编程 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1 简介 GUi的核心技术:Swing AWT 1.界面不美观 2.需要jre环境 为什么要学习GU ...

随机推荐

  1. Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)

      ViewGroup View  Activity dispatchTouchEvent 有 有 有 onInterceptTouchEvent 有 无 无 onTouchEvent 有 有 有 例 ...

  2. OpenGL FrameBufferCopy相关Api比较(glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D)

    OpenGL FrameBufferCopy相关Api比较 glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D 标题所述 ...

  3. cocos2dx骨骼动画Armature源码分析(二)

    flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). sk ...

  4. 【代码笔记】iOS-图片手势,上传照片

    代码: RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewControl ...

  5. There is insufficient system memory to run this query 错误

    服务器环境大致情况如下: 操作系统:   Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 数据库  :   Mic ...

  6. [MySQL Reference Manual] 10 全球化

    10.全球化 本章主要介绍全球化,包含国际化和本地化,的一些问题: ·         MySQL在语句中支持的字符集 ·         如何为服务配置不同的字符集 ·         选择错误信息 ...

  7. 原生 CSS 网格布局学习笔记

    下是来自Oliver Williams的帖子. Oliver已经学习了相当长时间的原生CSS网格,可以说是在CSS网格方面有一定的发言权.在这篇文章中,他将以非同寻常的思路分析自己的CSS网格布局学习 ...

  8. SQL周、日、月、年数据统计

    本文只是记录在项目中用到的统计的SQL语句,记一笔以防忘了 /// <summary> /// 获取统计数据 /// </summary> /// <param name ...

  9. C++STL - 类模板

    类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板   1.定义 template<typename 类型形参1, typename 类型形参2,...&g ...

  10. 手动使用sql*plus创建Oracle数据库

    下面是创建数据库必须执行的步骤: 1 )设置OS变量 2)配置初始化文件 3)创建必须的目录 4)创建数据库 5)创建数据目录 下面详细介绍这些步骤: 1 设置os变量 export ORACLE_H ...