1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

动态更改网站 CSS

本帖由 不学无术2006-04-10 发布。版面名称:前端开发

  1. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    方法比较多,感觉这种比较好。效果可以看老鬼的日志网站。

    代码分成三部分。

    连接 CSS 样式:
    HTML:
    <!-- 默认样式 -->
    <link rel="stylesheet" type="text/css" media="screen" href="css/default.css" />
    <!-- 备选样式 -->
    <link rel="alternate stylesheet" type="text/css" media="screen" href="css/green.css" title="green" />
    <link rel="alternate stylesheet" type="text/css" media="screen" href="css/red.css" title="red" />
    假设有一个默认样式,还有绿色和红色两种可供选择的样式。

    JavaScript 脚本:
    PHP:
    // ----------------------------------------------
    // StyleSwitcher functions written by Paul Sowden
    // http://www.idontsmoke.co.uk/ss/
    // - - - - - - - - - - - - - - - - - - - - - - -
    // For the details, visit ALA:
    // http://www.alistapart.com/stories/alternate/

    function setActiveStyleSheet(title) {    //根据传递的指定 title,设置样式可用
      
    var iamain;
      for(
    i=0; (document.getElementsByTagName("link")[i]); i++) {
        if(
    a.getAttribute("rel").indexOf("style") != -&& a.getAttribute("title")) {
          
    a.disabled true;
          if(
    a.getAttribute("title") == titlea.disabled false;
        }
      }
    }

    function 
    getActiveStyleSheet() {    //获取当前使用样式的 title 
      
    var ia;
      for(
    i=0; (document.getElementsByTagName("link")[i]); i++) {
        if(
    a.getAttribute("rel").indexOf("style") != -&& a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
      }
      return 
    null;
    }

    function 
    getPreferredStyleSheet() {    //获取预定义/备选样式
      
    var ia;
      for(
    i=0; (document.getElementsByTagName("link")[i]); i++) {
        if(
    a.getAttribute("rel").indexOf("style") != -1
           
    && a.getAttribute("rel").indexOf("alt") == -1
           
    && a.getAttribute("title")
           ) return 
    a.getAttribute("title");
      }
      return 
    null;
    }

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

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

    window.onload = function(e) {    //窗口加载时,调用 Cookie 记录的样式
      
    var cookie readCookie("style");
      var 
    title cookie cookie getPreferredStyleSheet();
      
    setActiveStyleSheet(title);
    }

    window.onunload = function(e) {
      var 
    title getActiveStyleSheet();
      
    createCookie("style"title365);
    }

    var 
    cookie readCookie("style");
    var 
    title cookie cookie getPreferredStyleSheet();
    setActiveStyleSheet(title);
    使用部分:
    HTML:
    <ul>
      <li><a href="javascript: void(0)" onclick="setActiveStyleSheet('', 1); return false;">默认</a></li>
      <li><a href="javascript: void(0)" onclick="setActiveStyleSheet('green', 1); return false;">绿色</a></li>
      <li><a href="javascript: void(0)" onclick="setActiveStyleSheet('red', 1); return false;">红色</a></li>
    </ul>
    调用 setActiveStyleSheet 函数,运用指定样式。
     
  2. 老林

    老林 New Member

    注册:
    2005-09-06
    帖子:
    10,580
    赞:
    36
  3. gojorare

    gojorare New Member

    注册:
    2006-03-05
    帖子:
    87
    赞:
    0
    好早的东西了吧...
     
  4. redfox

    redfox New Member

    注册:
    2006-03-30
    帖子:
    106
    赞:
    0
  5. 风狼

    风狼 New Member

    注册:
    2005-10-01
    帖子:
    7,452
    赞:
    25
    看不懂
     
  6. only lan

    only lan New Member

    注册:
    2005-10-20
    帖子:
    295
    赞:
    2
  7. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    楼上的现在在什么地方混呢?
     
  8. OUYANG

    OUYANG New Member

    注册:
    2005-09-06
    帖子:
    3,025
    赞:
    5
    以前用过,后来不用了
     
  9. 一路走

    一路走 New Member

    注册:
    2005-11-05
    帖子:
    2,933
    赞:
    18
    看不懂