首页 > 其他分享 >Ext.ux.ThemeCycleButton换肤组件 示例

Ext.ux.ThemeCycleButton换肤组件 示例

时间:2023-04-28 18:10:33浏览次数:48  
标签:换肤 ux 示例 text theme file iconCls css icon


Ext.ux.ThemeCycleButton换肤组件 示例

效果:

 

 


创建调用HTML:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title></title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
 <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
 <script type="text/javascript" src="extjs/ext-all.js"></script>
 <script type="text/javascript" src="./mygrid.js"></script>
<style type="text/css">
</style>
<script>
Ext.onReady(function(){
            new Ext.ux.ThemeCycleButton({renderTo : document.body});
});
</script>
</head>
<body>
<div id='toolbar-div'></div>
</body>
</html>

 

备注:

附件中提供了十二种ext皮肤。

Ext.ux.ThemeCycleButton文件中要注意其url路径(包括css和css中图片的路径)。

Ext.ux.ThemeCycleButton文件源码:

Ext.ux.ThemeCycleButton = Ext.extend(Ext.CycleButton, {  
     /** 
  
      * file 你的css名称 
  
      * text 下拉框的名称 
  
      * iconCls 设置图标css 
  
      */                                    
   
     cssItems:[  
   
         {file: 'ext-all.css', text: 'default',checked:true,  iconCls: 'icon-blue-theme'},  
   
         {file: 'xtheme-black.css', text: 'black', iconCls: 'icon-black-theme'},  
   
         {file: 'xtheme-calista.css', text: 'calista', iconCls: 'icon-calista-theme'},  
   
         {file: 'xtheme-darkgray.css', text: 'darkgray', iconCls: 'icon-darkgray-theme'},  
   
         {file: 'xtheme-gray.css', text: 'gray', iconCls: 'icon-gray-theme'},  
   
         {file: 'xtheme-green.css', text: 'green', iconCls: 'icon-green-theme'}  ,    {file: 'xtheme-indigo.css', text: 'indigo', iconCls: 'icon-indigo-theme'},  
   
         {file: 'xtheme-midnight.css', text: 'midnight', iconCls: 'icon-midnight-theme'},  
   
         {file: 'xtheme-olive.css', text: 'olive', iconCls: 'icon-olive-theme'},  
   
         {file: 'xtheme-pink.css', text: 'pink', iconCls: 'icon-pink-theme'},  
   
         {file: 'xtheme-purple.css', text: 'purple', iconCls: 'icon-purple-theme'},   {file: 'xtheme-slate.css', text: 'slate', iconCls: 'icon-slate-theme'},  
   
         {file: 'xtheme-slickness.css', text: 'slickness', iconCls: 'icon-slickness-theme'}
   
     ],  
   
     themeVar:'style',  
   
     headVar: 'head',  
   
     //cssPath
   
     cssPath:'./extjs/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);

标签:换肤,ux,示例,text,theme,file,iconCls,css,icon
From: https://blog.51cto.com/u_9716826/6235229

相关文章

  • Ext.ux.TabCloseMenu插件的使用(TabPanel右键关闭菜单) 示例
    Ext.ux.TabCloseMenu插件的使用(TabPanel右键关闭菜单)示例效果: 创建调用的HTML:<html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"/><title></title><linkrel="stylesheet"type="tex......
  • Ext.ux.GMapPanel.js组件的使用 示例
    Ext.ux.GMapPanel.js组件的使用示例 效果: 创建调用的html:<html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><title>GMapWindowExample</title><linkrel="stylesheet"type=&......
  • linux 7zip压缩软件
    linux7zip压缩软件 yuminstallp7zip  P7ZIP的使用  创建压缩包:7zaa-t7ztest.7z*,此命令将目录中的所有文件压缩到test.7z中。  解开压缩包:7zaXtest.7z,此命令用于将test.7z中的文件提取出来。可使用-t来指明压缩格式。 ......
  • Linux中输入输出重定向中2>&1的使用(转)
    Linux中输入输出重定向中2>&1的使用(转) 实例 1)command2>errfile:command的错误重定向到文件errfile。2)command2>&1|...:command的错误重定向到标准输出,错误和标准输出都通过管道传给下个命令。3)var=`command2>&1`:command的错误重定向到标准输出,错误和标准输出都赋值给va......
  • 超大文件上传和断点续传的示例
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • Linux安装Nginx
    前言:老规矩,linux安装软件的目录都是data目录 1.进入data目录,创建nginx目录并进入该目录cd/datamkdirnginxcdnginx 2.yum在线安装一些基础环境yuminstallpcreyuminstallpcre-develyuminstallzlibyuminstallzlib-develyuminstallopensslyum......
  • 12 Linux的伙伴系统和SLAB分配器
    伙伴系统: buddy物理内存页面管理算法,最先源自Sun公司的Solaris操作系统;Linux后来也引入了伙伴系统;表示一个物理内存页面:Linux定义了一个page结构体,大量使用了c的union联合体定义结构字段,其大小取决于结构体里面占用内存最大的变量决定;好处是信息量很多,占用内存很少;一个page......
  • 嵌入式Linux的Qt
    链接:https://www.jianshu.com/p/99e620c678dc嵌入式Linux的Qt在嵌入式Linux系统上,可以使用多个平台插件:EGLFS,LinuxFB,DirectFB或Wayland。但是,这些插件的可用性取决于Qt的配置方式。EGLFS是许多主板上的默认插件。如果不合适,请使用QT_QPA_PLATFORM环境变量来请求另一个插件。......
  • Python rangelib.RangeSet类代码示例
    https://vimsky.com/examples/detail/python-ex-rangelib-RangeSet---class.htmlPythonrangelib.RangeSet类代码示例本文整理汇总了Python中rangelib.RangeSet类的典型用法代码示例。如果您正苦于以下问题:PythonRangeSet类的具体用法?PythonRangeSet怎么用?PythonRangeSet使......
  • paramiko遍历嵌套文件夹上传到linux服务器,并执行sh脚本
    场景:由于工作原因,开发打包后都要上传包到对应linux服务器,并执行对应shell脚本,替换包内配置文件,启动服务。换包频率过于频繁,因此需要实现一种不用打开xshell、xftp的方法,直接将包放在本地文件,双击exe运行所有操作,以节省时间,想到使用python的paramiko、pyinstaller模块实现。功......