网站转变风格的css变化

网站换肤,是一个比较老的话题了,理论很清晰,就是要根据js 来变换文件加载的css文件,根据需求来加载不同的css文件,有了这个基础就很明确要怎么做了,但是实际上还要记录当前用户的cookie  保证用户在下次登录的时候,能够使用之前的皮肤,这也就用到了cookie 和本地存储了 这就要看需要怎么样的需求了,下面这段代码 ,可以说直接扒下来就可以用,因为项目中用到了iframe,所以也就顾及到了iframe的css样式的引入 。

##title=css4
<link rel="stylesheet" title=css4 type="text/css" href="$request.contextPath/plugins/jquery-ui-custom/css/custom-theme/jquery-ui-1.9.2.custom-flat4.css"  charset="utf-8"/>
<link rel="stylesheet" title=css4 type="text/css" href="$request.contextPath/css/main-flat4.css"/> 
<link rel="stylesheet" title=css4 type="text/css" href="$request.contextPath/css/dashboard-flat4.css"  /> 
##title=css1 默认
<link rel="stylesheet" title=css1 type="text/css" href="$request.contextPath/plugins/jquery-ui-custom/css/custom-theme/jquery-ui-1.9.2.custom-flat3.css" charset="utf-8"/>
<link rel="stylesheet" title=css1 type="text/css" href="$request.contextPath/css/main-flat3.css" /> 
<link rel="stylesheet" title=css1 type="text/css" href="$request.contextPath/css/dashboard-flat3.css"/> 

#if($cssFiles)
    #foreach($css in $cssFiles)
        <link rel="stylesheet" type="text/css" href="$request.contextPath/$css"/>
    #end
#end
<script type="text/javascript" src="$request.contextPath/plugins/jquery-ui-custom/js/jquery-1.8.3.js"></script> 
<script type="text/javascript">

$(document).ready(function(){ 
//  $('.skin').click(function(event){
//        event.stopPropagation(); 
//      $('.skin-content').slideToggle("slow");
//  });
//    $(document).click(function(){
//      $('.skin-content').slideUp("slow");
//  });
    $('.styleswitch').click(function(){
        switchStylestyle(this.getAttribute("rel"));
        //alert(this.getAttribute("rel"));
        return false;     
    });
    var c = readCookie('style');
    if (c) switchStylestyle(c);
}); 

function switchStylestyle(styleName)  
{
    $('link[rel*=style][title]').each(function(i) 
    {
        this.disabled = true;
        if (this.getAttribute('title') == styleName) this.disabled = false;
    });
    var f=$('iframe');
    f.contents().find('link[rel*=style][title]').each(function(i) 
    {
        this.disabled = true;
        if (this.getAttribute('title') == styleName) this.disabled = false;
    });
    var f=$('iframe').contents().find('iframe');
    f.contents().find('link[rel*=style][title]').each(function(i) 
    {
        this.disabled = true;
        if (this.getAttribute('title') == styleName) this.disabled = false;
    });
    createCookie('style', styleName, 365);
}

function createCookie(name,value,days)
{
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name)
{
    createCookie(name,"",-1);
}
// /cookie functions

    </script>
    <!--<script type="text/javascript">-->
//var currentStyle = localStorage.getItem('curSDAPStyle') || 'css1';
//$(function(){
//  $('.skin').click(function(event){
//        event.stopPropagation(); 
//      $('.skin-content').slideToggle("slow");
//  });
//    $(document).click(function(){
//      $('.skin-content').slideUp("slow");
//  });
//    $('.styleswitch').click(function(){
//        switchStyle(this.getAttribute("rel"));
//        //alert(this.getAttribute("rel"));
//        return false;     
//    });
//    
//    
//    if (currentStyle) {
//      switchStyle(currentStyle);
//      if ($('iframe').length) {
//          $('iframe').each(function () {
//              $(this).load(function () {
//                  var currentStyle = localStorage.getItem('curSDAPStyle') || 'css1';
//                  switchStyle(currentStyle);
//                    if ($(this).contents().find('iframe').length) {
//                        $(this).contents().find('iframe').each(function () {
//                            $(this).load(function () {
//                              var currentStyle = localStorage.getItem('curSDAPStyle') || 'css1';
//                              switchStyle(currentStyle);
//                            });
//                        });
//                    }
//              });
//            });
//      }
//    }
//}); 
//function switchStyle(name) {
//  var _loop = function (el) {
//        if (el.find('link[rel*=style][title]').length) {
//          el.find('link[rel*=style][title]').each(function () {
//              this.disabled = true;
//              if (this.getAttribute('title') == name) this.disabled = false;
//          });
//        } else {
//            _render(el);
//        }
//  }, _render = function (el, type) {
//          var curEl = type ? el : el.contents();
//          if (curEl.find('link[rel*=style][title]').length) {
//              _loop(curEl);
//          } else {
//              el.load(function () {
//                  _loop(curEl);
//              });
//          }
//      };
//  localStorage.setItem('curSDAPStyle', name);
//    currentStyle = name;
//  _render($(document), 'root');
//  if ($('iframe').length) {
//      $('iframe').each(function () {
//          _render($(this));
//          if ($(this).contents().find('iframe').length) {
//              $(this).contents().find('iframe').each(function () {
//                  _render($(this));
//              });
//          }
//      });
//  }
//}
 <!--</script>-->

两套样式,主要依据了link标签的title 和disabled 这两个属性来进行控制的,cookie相关的代码几乎可以不用动了,要注意的就是点击事件来分别控制不同的代码引入就好了。。

 

还可以进入个人博客:www.jishubar.cn

posted @ 2017-01-19 09:09  王老五Plus  阅读(408)  评论(0编辑  收藏  举报