`
andrew.yulong
  • 浏览: 169786 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ExtJs控制之更换皮肤

阅读更多

  今天和大家分享一个更换皮肤的控件,但是狠是失望,因为ext官方提供的css很粗糙,最好让美工加以修改,不说了,代码如下.

Ext.ux.ThemeCycleButton = Ext.extend(Ext.CycleButton, {



	/**

	 * file 你的css名称

	 * text 下拉框的名称

	 * iconCls 设置图标css

	 */									 

	cssItems:[

		{file: 'ext-all.css', text: '蓝色月影 ',checked:true,  iconCls: 'icon-blue-theme'},

		{file: 'xtheme-gray.css', text: '灰色回忆 ', iconCls: 'icon-gray-theme'},

		{file: 'xtheme-slate.css', text: '深蓝心情 ', iconCls: 'icon-blue-theme'},

		{file: 'xtheme-black.css', text: '黑色物语 ', iconCls: 'icon-blue-theme'},

		{file: 'xtheme-olive.css', text: '绿色芳香 ', iconCls: 'icon-blue-theme'},

		{file: 'xtheme-purple.css', text: '诱惑紫色 ', iconCls: 'icon-blue-theme'}

	],

	themeVar:'style',

	headVar: 'head',

	//cssPath是你放css的位置,这个路径要是弄错了,神仙也出不来的

	cssPath:'js/ext2/resources/css/',

	

	initComponent: function() {

		Ext.apply(this, {

		    showText: true,

			prependText: ' ',

   			items: this.cssItems

		});

		if(Ext.state.Manager){ 

        	var selectedTheme = Ext.state.Manager.get(this.themeVar); 

            if(selectedTheme){ 

				for(var i=0; i<this.items.length;i++){

					if (this.items[i].file == selectedTheme){

						this.items[i].checked = true;

//						this.setActiveItem(this.items[i], true); //error ??

						this.changeHandler(this, this.items[i]);

//						this.changeHandler.defer(1000, this, [this, this.items[i]]);

						break;

					}

				}

            } 

        }

		Ext.ux.ThemeCycleButton.superclass.initComponent.apply(this, arguments);

	},

	

	changeHandler: function(o, i){

        if(Ext.state.Manager.getProvider()) {

            Ext.state.Manager.set(this.themeVar, i.file);

			Ext.state.Manager.set(this.headVar, i.head);

        }

		Ext.util.CSS.swapStyleSheet(this.themeVar, this.cssPath + i.file);

		Ext.util.CSS.getRule('.x-panel-body', true).style.background = 'url(' + i.head + ')';

//		Ext.util.CSS.updateRule('.x-panel-body', 'background', 'url(' + i.head + ')');

		if(Ext.getCmp('viewport')){

   	    	Ext.getCmp('viewport').layout.center.panel.setSize(Ext.getCmp('viewport').layout.center.getSize().width + 1);

			Ext.getCmp('viewport').doLayout();

			Ext.getCmp('viewport').layout.center.panel.setSize(Ext.getCmp('viewport').layout.center.getSize().width - 1);

			Ext.getCmp('viewport').doLayout();

		}

	}

	        

});



Ext.reg('themecyclebutton', Ext.ux.ThemeCycleButton);

例子如下:

var tb=new Ext.Toolbar('toolbar-div');//创建一个工具条



        tb.add(

		    '  ',

		    '  ',

 		 	'  ',

			'<b>sam.zhang<b>',

			'  ',

			'  ',

			'2008-11-10 11:20 ',

			'  ',

			'  ',

			'这是第35次登陆系统',

			'->',

			' ',

			'',

			'->',

			new Ext.Toolbar.Button({

	           text: 'WEbQQ',

			   handler: function(){

			   	alert("正在启动webQQ,请稍候...");

			   }

           }),

		   '-',

		   	new Ext.Toolbar.Button({

	           text: '更改密码',

			   handler: function(){

			   	alert("你没有权限更改密码.");

			   }

           }),

		   '-',

		   new Ext.Toolbar.Button({

	           text: '注销',

			   handler: function(){

			   		window.location='ask123_logout';

			   }

           }),

		   '-',

                  //...调用控件对象就可以了,easy吧?

		   new Ext.ux.ThemeCycleButton

        );
分享到:
评论
2 楼 xiaofei_suman 2009-03-14  
我想请问一下 iframe 下更换皮肤的问题, 你具体是怎么是实现的???
1 楼 qiu768 2009-01-12  
古德!古德!3Q!3Q!

相关推荐

    extjs4.2更换主题

    本文将深入探讨如何在 EXTJS 4.2 中更换主题,包括视图层的样式编辑、控制层的事件处理以及如何从 Cookie 中读取和保存主题设置。 1. **视图层的样式编辑** 在 EXTJS 应用中,视图层是用户界面的呈现部分,它包含了...

    Struts,做的EXTJS简易例子,可更换皮肤(强烈推荐)

    4. **更换皮肤**: EXTJS支持多皮肤,每个皮肤包含一系列CSS和图片资源。开发者可以为EXTJS应用指定不同的皮肤路径,实现皮肤更换。用户可以通过选择不同的皮肤选项,动态加载对应的CSS和图片资源。 5. **数据验证与...

    3套收藏的ExtJS主题皮肤资源.rar

    ExtJS是一款基于JavaScript的富...总的来说,掌握如何更换和定制ExtJS主题皮肤是提升Web应用美观度和用户体验的关键技能之一。通过灵活运用这些主题资源,开发者可以创造出独具特色的EXTJS应用,满足多样化的项目需求。

    ExtJs-3.2.0.rar

    ExtJS支持更换主题和皮肤,开发者可以通过预设的主题或创建自定义皮肤来改变应用的外观,满足不同项目的视觉需求。 总结,"ExtJs-3.2.0.rar"压缩包为开发者提供了全面的ExtJS 3.2.0资源,包括核心库、样式表、文档...

    extJS3.1源码及demo

    8. **主题和皮肤**:ExtJS允许开发者自定义或更换皮肤,以改变应用的外观和感觉。3.1版本可能包含了基础的皮肤,但更丰富的主题通常需要在后续版本中寻找。 9. **工具提示和弹出框**:提供动态工具提示和可配置的弹...

    Extjs2.0一些例子

    10. **皮肤和主题**:ExtJS 2.0支持更换皮肤,可以通过修改CSS样式来改变应用的整体外观,满足不同设计需求。 通过研究和实践这些例子,你将能够熟练地运用ExtJS 2.0开发出功能丰富、用户友好的Web应用。虽然ExtJS...

    ExtJs-3.3.1框架

    1. **换肤机制**:ExtJS 3.3.1支持皮肤更换,允许用户根据需求调整应用程序的外观和风格。这通常是通过CSS样式和主题实现的,开发者可以轻松地切换或创建新的皮肤,以满足不同用户界面的需求。 2. **登录功能**:...

    extjs中文版api

    9. **主题和皮肤**:ExtJS支持更换主题,通过Sass预处理器,开发者可以定制符合自己需求的外观和样式。 10. **国际化**:ExtJS提供了国际化支持,允许应用根据用户的选择显示不同语言的界面。 通过阅读`ExtjsAPI...

    [上传下载]ExtJS 2.2 开源网络硬盘系统_dogdisk.zip

    6. **主题定制**:ExtJS支持多主题,开发者可以通过更换皮肤文件轻松改变应用程序的外观,DogDisk可能有定制的主题以满足特定的品牌风格。 现在转向DogDisk网络硬盘系统: 1. **文件管理**:DogDisk提供基本的文件...

    iejoyswebos for .net 桌面级WEB开发框架程序V1.08

    外观皮肤化,可以做成不同的风格包,随意更换系统外观,这点是继承了EXTJS的特点。 3。支持多语言。iejoyswebos拓展了语言包,可以支持多语言,而且增加语言包也非常简单 4.动态加载所需的JS和CSS文件,JS文件已...

    EXT3.4 中的帮助文件(docs)

    9. **主题和皮肤**:EXT3.4允许开发者定制和更换皮肤,以改变应用的外观和风格。 10. **事件系统**:EXT3.4使用事件驱动的设计模式,组件间的交互通过监听和触发事件来实现,这使得代码更加模块化和易于维护。 11....

    ext-3.2.0.rar

    9. **主题和皮肤**:EXTJS支持更换主题,可以轻松改变应用的外观,满足不同项目的需求。 10. **性能优化**:EXTJS 3.2.0虽然相对较旧,但依然包含了一些性能优化技巧,如延迟渲染、动态加载等,可以在不影响用户...

    iejoyswebos for .net WEBOS桌面开发框架程序

    外观皮肤化,可以做成不同的风格包,随意更换系统外观,这点是继承了EXTJS的特点。 3。支持多语言。iejoyswebos拓展了语言包,可以支持多语言,而且增加语言包也非常简单 4.动态加载所需的JS和CSS文件,JS文件已...

    ext-2.2.rar

    6. **主题化**:支持自定义皮肤,允许开发者通过更换CSS样式来改变应用的整体外观,提供一致的用户体验。 7. **工具提示和拖放功能**:ExtJS 2.2提供了易于使用的工具提示和拖放API,增强了用户交互体验。 8. **...

    iejoyswebos for .net 桌面开发框架程序V1.02

    外观皮肤化,可以做成不同的风格包,随意更换系统外观,这点是继承了EXTJS的特点。 3。支持多语言。iejoyswebos拓展了语言包,可以支持多语言,而且增加语言包也非常简单 4.动态加载所需的JS和CSS文件,JS文件已...

    16款最流行的JavaScript框架-开源中国社区.pdf

    Dijit是一个UI组件库,支持可更换皮肤;DojoX则包含创新的控件和应用,如数据网格、图表和离线应用。 3. **Sencha Ext JS**:Sencha是由ExtJS、jQTouch和Raphael合并的项目,主要用于构建富互联网应用。它提供了...

    iejoyswebos for .net桌面级WEB开发框架程序 V1.08

    外观皮肤化,可以做成不同的风格包,随意更换系统外观,这点是继承了EXTJS的特点。 3。支持多语言。iejoyswebos拓展了语言包,可以支持多语言,而且增加语言包也非常简单 4.动态加载所需的JS和CSS文件,JS文件已...

Global site tag (gtag.js) - Google Analytics