使用Extjs组件实现Top-Left-Main布局并且增加事件响应
每次在毕业答辩会上,看到同专业的同学只要是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布局并且增加事件响应的更多相关文章
- ExtJS 4.2 教程-08:布局系统详解
ExtJS 4.2 系列教程导航目录: ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 教程-02:bootstrap.js 工作方式 ExtJS 4.2 教程-03:使用 ...
- 无废话ExtJs 入门教程十六[页面布局:Layout]
无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Element 2 组件源码剖析之布局容器
0x00 简介 前文分析过组件的 布局栅格化(Grid Layout) ,通过基础的 24 分栏,迅速简便地创建布局. 本文将介绍用于布局的容器组件,使用 Flexbox 功能将其所控制区域设定为特定 ...
- Container容器控件的使用、Hbox与Vbox布局管理器的使用、以及AjaxAction前后台事件响应
1.由于有前后台交互功能,需要在Spring上下文中注册一个用于提供服务的bean,对于这个bean使用Spring提供的@Component标注,如果需要使用@Component注解,需要在项目中W ...
- 基于Vue的事件响应式进度条组件
写在前面 找了很多Vue 进度条组件!,都不包含拖拽和点击事件,input range倒是原生包含input和change事件,但是直接基于input range做进度条的话,样式部分需要做大量调整和 ...
- Unity Event Trigger 事件响应(二维,三维)添加组件
EventTrigger 上主要的方法有PointerEnter.PointerExit.PointerDown.PointerUp.PointerClick............都会显示在面板上面 ...
- ExtJS中layout的12种布局风格
总览 extjs的容器组件都可以设置它的显示风格,它的有效值有 1. absolute,2. accordion, 3. anchor, 4. border, 5. card, 6. column, ...
- 第34天学习打卡(GUI编程之组件和容器 frame panel 布局管理 事件监听 多个按钮共享一个事件 )
GUI编程 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1 简介 GUi的核心技术:Swing AWT 1.界面不美观 2.需要jre环境 为什么要学习GU ...
随机推荐
- 推荐一个iOS关于颜色的库-Wonderful
Wonderful 这个库主要是与UIColor息息相连的,其中一共包含四个子文件,UIColor+Wonderful,UIColor+Separate,SXColorGradientView,SXM ...
- Android 应用程序集成FaceBook 登录及二次封装
1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台 https://developers.facebook.com/ap ...
- C++的单例模式与线程安全单例模式(懒汉/饿汉)
1 教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实 ...
- 安装免费的正版Windows10操作系统 - 初学者系列 - 学习者系列文章
Windows 10操作系统是目前Windows平台最新的操作系统,其相对于其它旧版的操作系统是一个比较成功的操作系统.微软直接使用10版本号,跳过了9版本号进行发布这款操作系统,说明windows ...
- vim vundle 安装Base16 Vim主题
1.vim /etc/vimrc set background=dark colorscheme base16-default 2.同样在vimrc中的vundle位置添加 Plugin 'chris ...
- 搭建高可用的redis集群,避免standalone模式带给你的苦难
现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境 曾今也遭遇到这种情况,导致redis内存不够挂掉的情况 ...
- StringUtils工具类
StringUtils源码,使用的是commons-lang3-3.1包.下载地址 http://commons.apache.org/lang/download_lang.cgi 以下是String ...
- 从零自学Hadoop(05):Ambari
阅读目录 序 引入背景 Ambari介绍 在线安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...
- 一则uiautomation错误处理
一款iphone程序,用到了多window,结果在最后一个window里设置textfield时出错 target.frontMostApp().mainWindow().textFields()[0 ...
- 帆软报表FineReport2016年1月份产品更新一览
.条件属性可使用页码参数插件 由于报表计算逻辑关系,条件属性中取不到页码公式.但是有些场景下又是需要在条件属性中取到页码的,比如标题只要偶数页显示,比如奇数页标题标红等等. 插件安装完成后,条件属性里 ...