2013-05-29 101 views
-5

我想改变,由于用户的选择在选择列表中的CSS文件:如何在主题之间切换?

<select> 
<option>light</option> 
<option>dark</option> 
</select> 

所以当选择光css文件将light.css当黑暗如此dark.css 并保存此coice在饼干管他呢 。 谢谢!

+1

[你有什么尝试?](http://whathaveyoutried.com/) –

+0

使用JavaScript来交替两个外部样式表。如果您遇到困难,请回复一个更具体的问题。 – meagar

+0

http://stackoverflow.com/questions/9946593/how-to-change-and-maintain-multiple-color-themes-at-runtime-with-css/9946764#9946764 –

回答

1

您可以在样式表设置禁用属性,这将禁用样式表

说你有两个样式

<link rel="stylesheet" type="text/css" href="light-theme.css" id="light-theme"/> 
<link rel="stylesheet" type="text/css" href="dark-theme.css" id="dark-theme"/> 

您可以轻松地启用只是其中之一

function setTheme(theme) { 
    var themes = ["light-theme", "dark-theme"]; 
    for (var i=0; i < themes.length; i++) { 

     var styleSheet = document.getElementById(themes[i]); 
     if (themes[i] == theme) { 
     styleSheet.removeAttribute("disabled"); 
     } else { 
     styleSheet.setAttribute("disabled", "disabled"); 
     }  
    } 
} 

How to change and maintain multiple color themes at runtime with css?

你还是需要将它保存到cookie中,您可以提出另一个问题。

0

实现这一目标的最简单方法是勾上onchange事件select元素,并用它来设置你的<body>元素上一个特定的主题级,造成其他款式以供您的应用样式。或者,您可以销毁样式表并重新加载一个样式表,但这是一个更高级的主题。

既然你标记这个问题这也是值得一提的是,通常你只是做回发到服务器进行此,也改变一些会话/ Cookie数据,并基于该生成你的模板<head>另一<link>标签。

提到的两个选项都是解决问题的有效方法。