转自http://www.wenhaozhong.com/27.html

这里基于 Extjs4.2(发文时官方刚发布了最新版5.0) 进行开发的,更换主题后,主题信息保存在本地 cookie 中,如果要保存在数据库中,请自行修改!

由于我采用的是Sencha Architect3 可视化开发工具 ,前台代码采用官方推荐的mvc模式,

首先,我新建了个Combobox 让用户选择主题

model代码如下:

  1. Ext.define('Kl.model.sys.Theme', {
  2. extend: 'Ext.data.Model',
  3. requires: [
  4. 'Ext.data.Field'
  5. ],
  6. fields: [
  7. {
  8. name: 'name'
  9. },
  10. {
  11. name: 'id'
  12. }
  13. ]
  14. });

view 代码如下:

  1. {
  2. xtype: 'combobox',
  3. itemId: 'mycombobox1',
  4. padding: 0,
  5. fieldLabel: '皮肤更换            ',
  6. labelAlign: 'right',
  7. labelPad: 1,
  8. labelWidth: 65,
  9. name: 'theme',
  10. value: 'ext-all.css',
  11. displayField: 'name',
  12. forceSelection: true,
  13. queryMode: 'local',
  14. store: 'sys.Theme',
  15. typeAhead: true,
  16. valueField: 'id',
  17. listeners: {
  18. change: { //改变选择时触发事件
  19. fn: me.onMycomboboxChange11,
  20. scope: me
  21. },
  22. afterrender: {//初始化数据
  23. fn: me.onMycomboboxAfterRender11,
  24. scope: me
  25. }
  26. }
  27. }

在combobox中的store 保存了主题css文件的路径

Store 代码如下:

  1. Ext.define('Kl.store.sys.Theme', {
  2. extend: 'Ext.data.Store',
  3. requires: [
  4. 'Kl.model.sys.Theme',
  5. 'Ext.data.proxy.Ajax',
  6. 'Ext.data.reader.Array'
  7. ],
  8. constructor: function(cfg) {
  9. var me = this;
  10. cfg = cfg || {};
  11. me.callParent([Ext.apply({
  12. model: 'Kl.model.sys.Theme',
  13. storeId: 'sys.Theme',
  14. data: [
  15. {
  16. name: '经典怀旧',
  17. id: 'ext-all.css'
  18. },
  19. {
  20. name: '钢铁世界',
  21. id: 'ext-all-gray.css'
  22. },
  23. {
  24. name: '粉红女郎',
  25. id: 'ext-all-red.css'
  26. }
  27. ],
  28. proxy: {
  29. type: 'ajax',
  30. reader: {
  31. type: 'array'
  32. }
  33. }
  34. }, cfg)]);
  35. }
  36. });

由于采用基本的事件处理就可以搞定,所以就没有写 控制器 control

事件处理代码如下: 采用 Ext.util.CSS.swapStyleSheet() 方法设置主题。

  1. onMycomboboxChange11: function(field, newValue, oldValue, eOpts) {
  2. if(newValue!=oldValue){
  3. Ext.util.CSS.swapStyleSheet('theme', '../../extjs4.2/resources/css/'+newValue);
  4. var cp = new Ext.state.CookieProvider();
  5. Ext.state.Manager.setProvider(cp);
  6. cp.set("themes",newValue);
  7. }
  8. },
  9. onMycomboboxAfterRender11: function(component, eOpts) {
  10. var cp = new Ext.state.CookieProvider();
  11. Ext.state.Manager.setProvider(cp);
  12. //cp.set("themes",data.username);
  13. var themes = cp.get("themes");
  14. if(themes){
  15. component.setValue(themes);
  16. Ext.util.CSS.swapStyleSheet('theme', '../../extjs4.2/resources/css/'+themes);
  17. }
  18. }

小伙伴们,你搞定了吗? 附上效果图:

其他参考链接

extjs4.2更换主题

转载于:https://www.cnblogs.com/Joetao/articles/4657428.html

Extjs 更换主题(转载)相关推荐

  1. 使用 css/less 动态更换主题色(换肤功能)

    前言 说起换肤功能,前端应该是非常熟悉了? 一般来说换肤的需求分为几种: 1. 纯前端,直接在页面前端通过点击自由切换限定的几种主题色,切换之后主题色变量存到本地浏览器 2. 在后台配置好色值,传到前 ...

  2. ant-design更换主题颜色

    ant-design更换主题颜色 转载:https://blog.csdn.net/zhangyuxuan2/article/details/88868822 需求 使用ant-design-vue, ...

  3. 苹果cms如何手动更换主题

    用苹果cms把网站建设好之后,如果我们不太喜欢初始网站模板或者用了一定时间后想给网站换一个设计风格的情况下怎么更换网站模板呢?今日就把这个操作方法传授给刚出道的菜鸟们.在这里的前提条件是确认你拥有早已 ...

  4. Qt版连连看之极速连连看:界面设计(一)QSS更换主题

    [github地址]speedlink-qt 极速连连看在界面上的特点: 1.支持更换主题 2.画面能够全部切换,基本不使用对话框等方式进行消息提示 3.使用的某些控件(如移动到上面发出声音的按钮.具 ...

  5. linux mint 图标主题_如何在 Linux Mint 中更换主题

    一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...

  6. 主题图标_iPhone一键更换主题、图标神器

    iOS图标虽然是经典,但是看久了也是会腻的.今天教大家一个简单的方法,来更换iPhone的图标. 更换主题.图标教程 前往App Store搜索[moloko]进行下载安装,这是一款可以替iPhone ...

  7. linux mint 主题切换,详解如何在 Linux Mint 中更换主题

    一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. 自从 Mint 的开发团队开始更为严肃的对待设计, &q ...

  8. android最简单的更换主题,教你更换Android手机主题

    买了Android手机的朋友肯定都希望手机桌面拥有一个好看的手机主题,但是具体操作却不会,下面就给大家简单教程. 目前在android系统上常见的主题软件有:open home.ADW launche ...

  9. ExtJs皮肤主题定制 sencha Themer

    ExtJs皮肤主题定制 sencha Themer 1 介绍 在Ext JS中创建自定义主题一直是一项挑战.但是使用Sencha Themer可以大大提高你的开发效率. 2 准备工作 确保您拥有Sen ...

最新文章

  1. 面试官问:Integer 如何实现节约内存和提升性能的?
  2. 基于SSH实现模特人才招聘网站
  3. Typecho开启全站Pjax
  4. “无语!只因姓True,苹果封了我的iCloud账户”
  5. python 之 functools模块
  6. 武汉理工大学计算机学院夏令营,武汉理工大学计算机科学与技术学院(专业学位)软件工程保研夏令营...
  7. 海南大学考研经验分享之(考研数学)
  8. 角动量守恒与陀螺力矩
  9. python中卡方检验_python 使用卡方检验
  10. 计算机连接小米usb驱动,win7系统安装小米usb驱动的操作方法
  11. php cms系统 知乎,php cms 知乎
  12. python中用pip安装出现Microsoft Visual C++ 14.0 is required. Get it with Microsoft Visual C++ Build Tools
  13. 扫描中如何实现自动纠偏
  14. 《一千年以后》最后一百元
  15. PaddleOCR win10部署 C++
  16. 中国历史朝代 英文翻译 A Brief Chinese Chronology
  17. 国产数据库应用调查统计
  18. MFC开发——点击页面生成图标功能
  19. 河北专接本计算机2020年真题,2020年河北专接本考试公共课数(一)真题.pdf
  20. Android分区存储

热门文章

  1. Git 的工作区、暂存区、版本库—— Git 学习笔记 15
  2. UNIX再学习 -- 系统数据文件和信息
  3. android Spinner点击事件处理
  4. Java之什么是序列化以及为什么要序列化
  5. android6.0源码分析之Camera API2.0下的初始化流程分析
  6. Android开发工具之Android Studio---版本控制SVN使用三(常规操作)
  7. 购进不需要安装的生产设备_静压砖机设备生产环境的选择及安装前期事项分析...
  8. c#如何通过ftp上传文件_ftp自动上传工具,ftp自动上传工具如何自动上传文件
  9. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...
  10. python 读取大文件_Python读取大文件