使用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 ...
随机推荐
- docker中建立私有git服务器[gitlab]
现在使用git的很普遍,在开发内部如何建立个git服务器,本文以gitlab为例,让你分分钟就可以搭好一个环境[docker的威力非同一般] 首先在docker.com找到gitlab的下载源和信息, ...
- 自己实现苹果安装app动画
最近在学习CALayer相关动画,然后某一天突然发现苹果安装app这动画就很不错啊,所以就想自己实现下. 具体效果如图: 还是不试不知道一试吓一跳啊,这看上去简单的动画没我想象的那么简单. 首先这个动 ...
- Mac ping localhost 地址变化
title: Mac ping localhost 地址变化date: 2016-1-15 16:21:55categories: IOS tags: mac 小小程序猿我的博客:http://day ...
- Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...
- iOS 实现转盘的效果
效果 #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBO ...
- Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- IT人创业之融资方式 - 创业与投资系列文章
对于想要创业的IT人,最基本的就是需要资金和团队.笔者在经历了自己制定的职业道路之后(见文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章),进行过投资(见文:IT人经济思维之投资 ...
- mysql安装及配置服务
第一次安装mysql 1.本地环境:windows 7 -64,mysql版本5.5.28(mysql-5.5.28-winx64.msi) 2.双击mysql-5.5.28-winx64.msi,进 ...
- SQL SERVER中隐式转换的一些细节浅析
其实这是一篇没有技术含量的文章,精通SQL优化的请绕道.这个缘起于在优化一个SQL过程中,同事问了我一个问题,为什么SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思,说 ...
- FindBugs 入门——帮你减少代码中的bug数
FindBugs 入门 FindBugs 作用 开发人员在开发了一部分代码后,可以使用FindBugs进行代码缺陷的检查.提高代码的质量,同时也可以减少测试人员给你报的bug数. 代码缺陷分类 根据缺 ...