使用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 ...
随机推荐
- HashSet 浅析示例
* 1.继承自抽象类 AbstractSet,实现接口 Set.Cloneable.Serializable: * 2.元素无顺序: * 3.元素不可重复: * 4.采用哈希算法插入数据,插入速度快: ...
- [转]PaaS平台分类
本文转自阿朱说 大家发现没,自从我们上升到有规模的互联网架构后,咱们中国的技能能力就跟不上了,只能采取国际业界顶级大公司开源出来的而且已经经受住大规模实际应用考验的组件来搭架构,因而咱们近几年大规模网 ...
- SqlHelper类
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- Linux备份ifcfg-eth0文件导致的网络故障问题
今天在给一台操作系统为Oracle Linux Server release 5.7的服务器配置网络时,遇到了备份ifcfg-eth0配置文件,导致网卡无法绑定IP地址的情况.觉得是个有意思的案例,特 ...
- 如何在Oracle中复制表结构和表数据
1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table ta ...
- KAFKA一异常处理记录
kafka-console-consumer.sh --topic TOPIC_KEYWORD --from-beginning --zookeeper localhost报异常,Exception ...
- css3 选择器(三)
接css3选择器(一) 接css3 选择器(二) 这篇和前两篇内容相关性不大,主要是涉及到一些css3的状态选择器,所以标题从一开始. 一.[:enabled]选择器 一看这个属性就知道是专为表单元素 ...
- [转]NET Core中实现一个Token base的身份认证
本文转自:http://www.cnblogs.com/Leo_wl/p/6077203.html 注:本文提到的代码示例下载地址> How to achieve a bearer token ...
- 更改计算机名称后 导致 sql server 2008 R2 用windows账户不能附加的错误解决办法
出错背景:本人想用sql server 2008 R2 附加sql server 2005数据库出现拒绝访问,后查询网站得知,要用windows身份验证方式登录进去附加, 然后我就用windows身份 ...
- 配置jpa
persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...