`
crabdave
  • 浏览: 1294716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.ux.TabPanel组件的使用

阅读更多

Ext.ux.TabPanel组件的使用

效果:

 

HTML代码:

  Ext.onReady(function() {
  var tabtest = new Ext.ux.TabPanel({
    activeTab: 0,
    tabPosition:'left',  //choose 'left' or 'right' for vertical tabs; 'top' or 'bottom' for horizontal tabs
    textAlign:'left',
    tabStripWidth:200,
    defaults:{autoScroll: true},
    items:[{
      title: 'Tab 1',
      html: "My content was added during construction."
    },{
      title: 'Tab2',
      html: "My content was added during construction."
    },{
      title: 'Disabled Tab',
      disabled:true,
      html: "Can't see me cause I'm disabled"
    }
        ]
  });

  var win = new Ext.Window({
    width:800,
    layout:'fit',
    height:600,
    items:tabtest
  });
  win.show();
});

 

Ext.ux.TabPanel文件源码:

 Ext.namespace("Ext.ux");

/**
 * @class Ext.ux.TabPanel
 * @extends Ext.TabPanel
 *
 * Enable tabs to be positioned on the left side of a TabPanel. In order to make as few changes as possible, we reuse
 * the header element and place it on the left side
 */

/**
 * @constructor
 * @param {Object} cfg A config object
 *  @cfg {String} tabPosition 'top' (the ext default behaviour), 'bottom' (also ext default), 'left' (vertical tabs on the left side) or right (vertical tabs on the right side)
 *  @cfg {Number} tabWidth (only applies if verticalTabs is set to true)
 *  @cfg {String} textAlign 'left' or 'right', deafults to 'left' (only applies if verticalTabs is set to true)
 */
Ext.ux.TabPanel = function(cfg) {
  if (cfg.tabPosition == 'left' || cfg.tabPosition == 'right') {
    cfg.cls = cfg.cls || '';
    cfg.cls = 'verticalTabs ' + cfg.cls;
    if (cfg.textAlign && cfg.textAlign == 'right') {
      cfg.cls = 'alignRight ' + cfg.cls;
    }
    cfg.cls = (cfg.tabPosition == 'left' ? 'leftTabs ' : 'rightTabs ') + cfg.cls;
    this.intendedTabPosition = cfg.tabPosition;
    this.verticalTabs = true;
    cfg.tabPosition = 'top';
  }
  Ext.ux.TabPanel.superclass.constructor.call(this, cfg);
};

Ext.extend(Ext.ux.TabPanel, Ext.TabPanel, {
  tabWidth : 150,

  afterRender : function() {
    Ext.ux.TabPanel.superclass.afterRender.call(this);
    if (this.verticalTabs) {
      this.header.setWidth(this.tabWidth);
      this.header.setHeight(this.height || this.container.getHeight());
    }
  },

/**
 * Adjust header and footer size.
 * @param {Number} w width of the container
 * @return {Number} the body will be resized to this width
 */
  adjustBodyWidth : function(w) {
    if (this.verticalTabs) {
      if (Ext.isIE6) {
        //I got the value "3" through trial and error; it seems to be related with the x-panel-header border; if the border
        //is set to "none", then this substraction is not necessary - but it does not seem related to the border width, margin or padding of any
        //of the panels so I dont know how to calculate it; please let me know if you have any idea what's going on here
        this.bwrap.setWidth(w - 3);
      }
      return w;
    }
    else {
      return Ext.ux.TabPanel.superclass.adjustBodyWidth.call(this, w);
    }
  },

/**
 * Get the new body height and adjust the height of the tab strip if it is vertical.
 * @param h {Number}
 */
  adjustBodyHeight : function(h) {
    if (this.verticalTabs) {
      this.header.setHeight(h + (this.tbar ? this.tbar.getHeight() : 0));
    }
    return Ext.ux.TabPanel.superclass.adjustBodyHeight.call(this, h);
  },

/**
 * If the tab strip is vertical, we need to substract the "header" width.
 * @return {Number} The frame width
 */
  getFrameWidth : function() {
    return Ext.ux.TabPanel.superclass.getFrameWidth.call(this) + this.verticalTabs ? this.tabWidth : 0;
  },

/**
 * If the tab strip is vertical, we don't need to substract it's height
 * @return {Number} The frame height
 */
  getFrameHeight : function() {
    return Ext.ux.TabPanel.superclass.getFrameHeight.call(this) - (this.verticalTabs ? this.header.getHeight() : 0);
  }
});

Css源码:

.verticalTabs ul.x-tab-strip li{
  clear:both;
  margin:0;
  width:100%;
}

.verticalTabs .x-tab-strip a.x-tab-strip-close{
  display:none;
}

.verticalTabs ul.x-tab-strip li .x-tab-strip-inner {
  padding:6px 3px;
}

.verticalTabs .x-tab-left, .verticalTabs .x-tab-strip .x-tab-with-icon .x-tab-right, .verticalTabs .x-tab-strip-top .x-tab-right{
  background:none;
  padding:0;
}

.verticalTabs ul.x-tab-strip-top{
  background:none;
  border:none;
  padding-top:0;
}

.verticalTabs ul.x-tab-strip li.x-tab-edge{
  border-bottom:1px solid #99BBE8!important;
}

.verticalTabs.leftTabs .x-tab-panel-header{
 float:left;
}

.verticalTabs.rightTabs .x-tab-panel-header{
 float:right;
}

.verticalTabs.alignRight ul.x-tab-strip {
  width: 100%;
}

.verticalTabs.alignRight ul.x-tab-strip li {
  clear: both;
  margin: 0;
  text-align: right;
  width: 100%;
}

 

备注:

http://extjs.com/forum/showthread.php?t=26257

分享到:
评论
2 楼 zfms 2012-10-17  
能上传一份附件吗?谢谢
1 楼 itfreeman 2009-04-04  
有这种需求三天了,找了好多资料,由于需求描述不清楚,都没找到答案,打算自己写或者想法折中写了,最后在这里找到。
虽然是转载,谢谢了!!非常感谢 !

相关推荐

    Ext.plugins.TDGi.tabScrollerMenu插件的使用

    Ext.plugins.TDGi.tabScrollerMenu插件是用于Ext JS框架的一个扩展,它主要用于解决TabPanel组件中的选项卡过多时的展示问题。当TabPanel的选项卡数量超过一定限制,这个插件会提供一个下拉菜单,用户可以通过该菜单...

    TinyMce For Extjs

    2. 创建一个ExtJS组件,例如Panel,并配置使用`Ext.ux.TinyMCE`组件。 3. 配置TinyMCE的参数,如语言、样式、工具栏等。 4. 初始化TinyMCE实例,绑定到特定的DOM元素。 5. 可能需要处理一些事件,如编辑器内容的改变...

    精通JS脚本之ExtJS框架.part1.rar

    5.1.6 Ext.TabPanel 5.2 信息提示框组件 5.2.1 Ext.MessageBox简介 5.2.2 Ext.MessageBox.alert() 5.2.3 Ext.MessageBox.confirm() 5.2.4 Ext.MessageBox.prompt() 5.2.5 Ext.MessageBox.wait() ...

    精通JS脚本之ExtJS框架.part2.rar

    5.1.6 Ext.TabPanel 5.2 信息提示框组件 5.2.1 Ext.MessageBox简介 5.2.2 Ext.MessageBox.alert() 5.2.3 Ext.MessageBox.confirm() 5.2.4 Ext.MessageBox.prompt() 5.2.5 Ext.MessageBox.wait() ...

    TabPanel布局

    总的来说,这个例子演示了如何使用ExtJS创建一个复杂的多区域布局,并在其中嵌套TabPanel组件,同时展示了如何定制TabPanel的行为,如标签页的自动调整、滚动以及右键菜单功能。这种布局方式在实际开发中非常常见,...

    InlineToolbarTabPanel

    它的实现依赖于`Ext.ux.InlineToolbarTabPanel.js`文件中的源代码,而`tabs-extension.html`和`tabs-extension.js`则可能是展示如何使用该组件的示例。理解并熟练运用这种组件,能够帮助开发者构建更加直观、易用的...

    ExtJS扩展 垂直tabLayout实现代码

    创建组件时,需实例化`Ext.ux.TabPanel`,如下所示: ```javascript aa = new Ext.ux.TabPanel({ tabPosition: 'left', autoScroll: true, deferredRender: false, activeTab: 0, enableTabScroll: true, ...

    ExtJs部署及使用方法

    - `b2b/Ext.ux.UploadDialog.js`: 文件上传对话框组件。 ##### 2.1 页面布局实现 在实际应用中,可以通过ExtJs的布局管理器来实现页面的布局设计。下面是一个简单的例子,展示了如何使用ExtJs的BorderLayout布局...

    extjs的的初步开发步骤

    - **文件上传组件**:如`b2b/Ext.ux.UploadDialog.js`,用于实现文件上传功能。 **二、实例开发** 这里我们以产品中心的产品信息查询为例,展示如何使用ExtJS进行实际开发。 1. **页面布局** 页面整体采用...

    sencha touch 模仿tabpanel导航栏TabBar的实例代码

    在这个实例中,我们看到一个自定义的`ux.TabBar`组件,它是对原生`Ext.Toolbar`组件的扩展,目的是模仿`tabpanel`的导航栏效果。以下是对这段代码的详细解析: 1. **配置项定义**: - `alternateClassName`:定义...

Global site tag (gtag.js) - Google Analytics