我正在构建一个Web应用程序,我希望用户可以选择不同的颜色主题。
我可以使用不同的样式表,然后加载我想要的那一个,但是我认为这将需要大量的代码(即使我只是将主题级别的CSS分离到单独的文件中)。
我想知道是否有一种方法可以设置全局主题参数,然后所有CSS属性都可以使用它来计算适合该主题参数值的颜色。
我正在构建一个Web应用程序,我希望用户可以选择不同的颜色主题。
我可以使用不同的样式表,然后加载我想要的那一个,但是我认为这将需要大量的代码(即使我只是将主题级别的CSS分离到单独的文件中)。
我想知道是否有一种方法可以设置全局主题参数,然后所有CSS属性都可以使用它来计算适合该主题参数值的颜色。
一个解决方案是使用像SASS这样的CSS预处理器。像往常一样创建样式表,但不要直接编写颜色,而是在单独的主题 .scss 文件中为它们创建变量以供参考。
例如,在 light_theme.scss 文件中:
$page_background_color: #f7f7f7;
$page_background_color: #333;
body {
background-color: $page_background_color;
}
使用多个样式表并不难,只需要在页面的<head>部分添加几行JavaScript代码:
<script type="text/javascript">
function switchCSS(NewCSS)
{
document.getElementById("theme").href=NewCSS;
}
</script>
一个命名的样式表链接:
<link id="theme" rel="stylesheet" href="css/gray.css" type="text/css" />
在 <body> 中提供一种通过在组合框中列出主题来切换主题的方法:
<select onchange="switchCSS(value);">
<option value="gray.css">Gray</option>
<option value="blue.css">Blue</option>
<option value="red.css">Red</option>
</select>