extjs换肤实例

4 篇文章 0 订阅
1 篇文章 0 订阅

因为美工的需要,将extjs的换肤模块效果做好,现在放出源代码供需要的人使用,已经将实便封装成js,可以直接下载调用
image 

使用的技术

1.extjs 代码库  3.2.1

2.js+cookie

3.已封装成js,可以直接调用

截图显示页

 

image

image

image

 

 

 

需要的js代码库:skin.js, 可以自己复制后保存

//-----------------------------初始化主题----------------------------------------------------------------  

//定义skin  array二维数给 
var skin_Array= Array_2(3,5); 
//初始化数组 index name cssUrl  列4为没有选中的图标  列5为选中时的图标 
//索引为0的主题为默认主题 
skin_Array[0][0]="0"; 
skin_Array[0][1]="blue"; 
skin_Array[0][2]="/KANQ_EGP/EXT/resources/css/xtheme-blue.css"; 
skin_Array[0][3]="/KANQ_EGP/IMAGES/skin_icons/blue_0.gif"; 
skin_Array[0][4]="/KANQ_EGP/IMAGES/skin_icons/blue_1.gif";

skin_Array[1][0]="1"; 
skin_Array[1][1]="gray"; 
skin_Array[1][2]="/KANQ_EGP/EXT/resources/css/xtheme-gray.css"; 
skin_Array[1][3]="/KANQ_EGP/IMAGES/skin_icons/gray_0.gif"; 
skin_Array[1][4]="/KANQ_EGP/IMAGES/skin_icons/gray_1.gif";

skin_Array[2][0]="2"; 
skin_Array[2][1]="access"; 
skin_Array[2][2]="/KANQ_EGP/EXT/resources/css/xtheme-access.css" ; 
skin_Array[2][3]="/KANQ_EGP/IMAGES/skin_icons/access_0.gif"; 
skin_Array[2][4]="/KANQ_EGP/IMAGES/skin_icons/access_1.gif";

//-----------------------------全局主题配置js, 需要调用主题的直接引用此js,---------created by  zhai ----

initTheme();

//以下是生成二级数组的函数 
function Array_2(nRow,nColumn){ 
    var array1=new Array(); //定义一维数组 
    for(i=0;i<nRow;i++) 
    { 
        array1[i]=new Array(); //将每一个子元素又定义为数组 
        for(n=0;n<nColumn;n++) 
        { 
            array1[i][n]=''; //此时aa[i][n]可以看作是一个二级数组 
        } 
    } 
    return array1; 
}

function initTheme() 
{   
     var theme_index= getCookie("themeindex"); 
    //var theme_url=""; 
    //根据主题名解析出主题使用的主题 
      if(theme_index != ""){ 
                 Ext.util.CSS.swapStyleSheet('theme',skin_Array[theme_index][2]); 
     } 
     else  //如果没有选择主题,加载默认主题 
     { 
                Ext.util.CSS.swapStyleSheet('theme',skin_Array[0][2]); 
     } 

//----------------------------以上为取得cookie 中保存的主题并设置应用---------------------

//----------------------------------------------------------设置主题函数start-------------------------------------------------------    
function setTheme(theme_index) 

  //设置应用主题 
    Ext.util.CSS.swapStyleSheet('theme',skin_Array[theme_index][2]);    
    setCookie("themeindex",theme_index); 
}

//-----------------------------------------------------设置主题结束----------------------------------------------------------------

//-------------------------------------设置cookie--------------------------------------------------------- 
function setCookie(name, value) { 
        var today = new Date(); 
        var expires = new Date(); 
        expires.setTime(today.getTime() + 1000 * 60 * 60 * 24 * 365);   // 保存一年时间的cookie 
        document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString(); 
        }

//-------------------------------------获取cookie--------------------------------------------------------- 
function getCookie(Name) { 
        var search = Name + "="; 
        if (document.cookie.length > 0) { 
            offset = document.cookie.indexOf(search); 
            if (offset != -1) { 
             offset += search.length; 
             end = document.cookie.indexOf(";", offset); 
             if (end == -1) { 
              end = document.cookie.length; 
             } 
             return unescape(document.cookie.substring(offset, end)); 
            } else { 
             return (""); 
            } 
        } else { 
            return (""); 
        } 
}

此文件的说明,最上端定义了三套皮肤,可以根据自己的路径修改成相应的csss文件。说明

skin_Array[0][0]="0";     //  皮肤索引值  必要,为前台设置主题所需 
skin_Array[0][1]="blue";     //皮肤皮, 有需要的时候显示出来 
skin_Array[0][2]="/KANQ_EGP/EXT/resources/css/xtheme-blue.css";   //皮肤样式CSS 
skin_Array[0][3]="/KANQ_EGP/IMAGES/skin_icons/blue_0.gif";      //非选择时的皮肤样式图片,效果参见第三个图
skin_Array[0][4]="/KANQ_EGP/IMAGES/skin_icons/blue_1.gif";      //选择时打色的皮肤样式文件

2.设置的方法

A。前台要设置的页面添加一个js函数

//------------------------------------------------------设置选择图片的变换-------------------------------------------- 
function changeImgUrl() 
{

//debugger; 
  for(var i=0;i<skin_Array.length;i++)  //依次输出所有的skinr路径 
                    { 
                        if(getCookie("themeindex")==i)  //如果当前刚好选中的主题的话 
                        { 
                            document.getElementById('skin_'+i).src=skin_Array[i][4]; 
                        } 
                        else 
                        { 
                             document.getElementById('skin_'+i).src=skin_Array[i][3]; 
                        } 
                    }


//-----------------------------------------------------------------------------------------------------------------------------

B。设置显示设置皮肤图标的代码

<script type="text/javascript"> 
                    for(var i=0;i<skin_Array.length;i++)  //依次输出所有的skinr路径 
                    { 
                        if(getCookie("themeindex")==i)  //如果当前刚好选中的主题的话 
                        { 
                            document.writeln("<img id="skin_"+i+"" src=""+skin_Array[i][4]+"" οnclick="setTheme('"+i+"');changeImgUrl(); " />"); 
                        } 
                        else 
                        { 
                             document.writeln("<img id="skin_"+i+"" src=""+skin_Array[i][3]+"" οnclick="setTheme('"+i+"');changeImgUrl();" />");    
                        } 
                    } 
             </script>

 

读取主题的方法:

在所有的页面引用skin.js 即可自动识别并应用主题,并自动应用每个主题的图片样式

注意,1.需要在extjs 库文件引用后引用skin.js

2.路径不要搞错了,不然图片和主题无法显示

以后如果要添加皮肤文件CSS的话, 只需要skin.js中添加二维数组的值即可,算是非常全面的皮肤设置模块了,全静态,所有语言均可调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值