CSS样式切换技巧

CSS样式切换技巧

样式与数据分离所带来的不只是符合标准这样的简单,样式既然与数据分离那ô样式的切换则变得理所当然的了!但是网上这样的中文教程实在是太少了!所以我收集了一部分中外网站已经实现的技术资料整理出来供网友参考。

首先要具备不同内容的CSS文件(最好ÿ个文件代表一种样式,或是代表需要作出变动的部分)。这里以三个为例:

第一个是背景为红色的CSS文件(red.css)CSS中的内容为:
body {background-color:red;}
第二个是背景为绿色的CSS文件(green.css)CSS中的内容为:
body {background-color:green;}
第三个是背景为黄色的CSS文件(yellow.css)CSS中的内容为:
body {background-color:yellow;}

然后在xthml文件中加入这三个CSS的链接
<link title="yellow" media="screen, projection" href="yellow.css" type="text/css" rel="alternate stylesheet">

css 代码
  1. "alternate stylesheet" href="red.css" type="text/css" title="red" media="screen, projection"/>   
  2. "stylesheet" href="green.css" type="text/css" title="green" media="screen, projection"/>   
  3. "alternate stylesheet" href="yellow.css" type="text/css" title="yellow" media="screen, projection"/>  

这三个中除了title不一样外还有一个地方有所不同,那就是REL。第一个与第三个都是alternate stylesheet只有第二个是stylesheet。这第二个就是当然样式。

在链接下面再导入一个JS文件,用来控制这个样式切换

js 代码
  1. function setActiveStyleSheet(title) {   
  2.   var i, a, main;   
  3.   if (title) {   
  4.   for(i=0; (a = document.getElementsByTagName('link')[i]); i++) {   
  5.   if(a.getAttribute('rel').indexOf('style') != -1 && a.getAttribute('title')) {   
  6.   a.disabled = true;   
  7.   if(a.getAttribute('title') == title) a.disabled = false;   
  8.   }   
  9.   }   
  10.   }   
  11.   }   
  12.   function getActiveStyleSheet() {   
  13.   var i, a;   
  14.   for(i=0; (a = document.getElementsByTagName('link')[i]); i++) {   
  15.   if(a.getAttribute('rel').indexOf('style') != -1 && a.getAttribute('title') && !a.disabled) return a.getAttribute('title');   
  16.   }   
  17.   return null;   
  18. }   

在合适的地方加入三个切换按钮

css 代码
  1. "javascript :void()" οnclick="setActiveStyleSheet('red'); return false;" title="红色样式">   
  2. "javascript :void()" οnclick="setActiveStyleSheet('green'); return false;" title="绿色样式">   
  3. "javascript :void()" οnclick="setActiveStyleSheet('yellow'); return false;" title="黄色样式">   
  4. "javascript :void()" οnclick="setActiveStyleSheet('none'); return false;" title="û有样式">   

好了发布试试点那三个切换链接!是不是已经切换了样式?

补遗:带有记忆功能的JS文档

js 代码
  1. function setActiveStyleSheet(title) {          
  2.     var i, a, main;          
  3.     for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {          
  4.          
  5.         if(a.getAttribute("rel").indexOf("style")!= -1 &&           
  6.        a.getAttribute("title")) {          
  7.             a.disabled = true;          
  8.             if(a.getAttribute("title") == title)          
  9.             a.disabled = false;          
  10.         }          
  11.     }          
  12. }          
  13. function getActiveStyleSheet() {          
  14.     var i, a;          
  15.     for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {          
  16.         if(a.getAttribute("rel").indexOf("style")!= -1 &&           
  17.        a.getAttribute("title") && !a.disabled)          
  18.         return a.getAttribute("title");          
  19.     }          
  20.     return null;          
  21. }          
  22. function getPreferredStyleSheet() {          
  23. var i, a;          
  24.     for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {          
  25.         if(a.getAttribute("rel").indexOf("style") != -1&&           
  26.            a.getAttribute("rel").indexOf("alt") == -1&& a.getAttribut("title"))           
  27.         return a.getAttribute("title");          
  28.     }          
  29.     return null;          
  30. }          
  31. function createCookie(name,value,days) {          
  32.     if (days) {          
  33.     var date = new Date();          
  34.     date.setTime(date.getTime()+(days*24*60*60*1000));          
  35.     var expires = ";        
  36.     expires="+date.toGMTString();          
  37.     }          
  38.     else expires = "";          
  39.     document.cookie = name+"="+value+expires+";  path=/";          
  40. }            
  41. function readCookie(name) {          
  42.     var nameEQ = name + "=";          
  43.     var ca = document.cookie.split(';');          
  44.     for(var i=0;i < ca.length;i++) {          
  45.         var c = ca[i];          
  46.     while (c.charAt(0)==' ') c = c.substring(1,c.length);          
  47.         if (c.indexOf(nameEQ) == 0)           
  48.             return c.substring(nameEQ.length,c.length);          
  49.     }          
  50.     return null;          
  51. }          
  52. window.onload = function(e) {          
  53.     var cookie = readCookie("style");          
  54.     var title = cookie ? cookie : getPreferredStyleSheet();          
  55.     setActiveStyleSheet(title);          
  56. }          
  57. window.onunload = function(e) {          
  58.     var title = getActiveStyleSheet();          
  59.     createCookie("style", title, 365);          
  60. }            
  61. var cookie = readCookie("style");          
  62. var title = cookie ? cookie :          
  63. getPreferredStyleSheet();          
  64. setActiveStyleSheet(title);     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值