我正在为基于 Twitter Bootstrap 构建的客户端开发一个项目。他希望有不同的配色方案供用户选择。例如,有一个红色配色方案和一个蓝色配色方案,用户可以通过顶部的菜单进行更改。
是否有任何 jQuery 插件(或其他任何东西)可以做到这一点?它真正需要做的就是加载一个不同的 CSS 文件,我想,你会怎么做呢?
我正在为基于 Twitter Bootstrap 构建的客户端开发一个项目。他希望有不同的配色方案供用户选择。例如,有一个红色配色方案和一个蓝色配色方案,用户可以通过顶部的菜单进行更改。
是否有任何 jQuery 插件(或其他任何东西)可以做到这一点?它真正需要做的就是加载一个不同的 CSS 文件,我想,你会怎么做呢?
使用Kickstrap。您可以从基本上任何地方安装主题,制作您自己的主题,包括来自 Bootswatch 的主题,并且它使用 Less.js 客户端每次轻松地重新编译您的更改。
好吧,既然你想加载不同的主题......
您可以使用 jQuery 加载不同的样式表
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css" />
</head>
<body>
...
</html>
这可能是按钮单击或触发的另一个事件。因此,您要做的只是将一个新元素插入到页面 DOM 的 head 部分。这可以在几行 jQuery 中完成:
$(document).ready(function () {
$("a").click(function () {
$('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');
});
});
我希望这能解决它...
我在 IE11、Chrome、Firefox 上对此进行了测试,它可以工作:
1.
<link id="theBoostrapTheme" type = "text/css" rel = "stylesheet" href = "Content/bootstrap-theme.min.css"/>
2.
<a role="menuitem" tabindex="-1" href="javaScript:void(0);" onclick="changeCurrentTheme('_Cerulean')">Cerulean</a>
代码:
function changeCurrentTheme(theNewThemeName) {
$("#theBoostrapTheme").attr("href", "Content/bootstrap-theme.min" + theNewThemeName + ".css");
}
在这种情况下,原始文件以外的主题文件命名如下:bootstrap-theme.min_ …. .css
. 例如:bootstrap-theme.min_Cerulean.css
更改样式的 href 本身不会做任何事情。浏览器已经加载了您的 CSS,更改 HREF 不会导致他再次读取新文件。
阅读这个问题的答案,它可能会对你有所帮助。
如果重新加载页面没问题,您可能应该在服务器上而不是通过 javascript 通过使用一些定义要使用的配色方案的会话值来执行此操作。