你可以做这样的事情,HTML:
<body class="red">
<p>Some text</p>
<a href="#" id="paint-blue">paint blue</a>
<a href="#" id="paint-red">paint red</a>
</body>
CSS:
body.red {
background-color: red;
}
body.red p {
color: yellow;
}
body.blue {
background-color: blue;
}
body.blue p {
color: white;
}
/* Some more stuff */
JS:
$("#paint-blue").click(function(event) {
event.preventDefault();
$("body").removeClass("red").addClass("blue");
}
$("#paint-red").click(function(event) {
event.preventDefault();
$("body").removeClass("blue").addClass("red");
}
这个想法是,根据顶级body
元素的类,页面上的某些元素的样式会有所不同。
编辑:您链接到的示例页面使用 cookie 存储所选主题,从外观上看,它总是加载黄色主题,然后一些onload
JS 检查 cookie 中的值并更改颜色。 这是一些使用 JS 设置和读取 cookie 的随机教程。事情onload
看起来像:
$(document).ready(function() {
// Should be easy to write if you look at the tutorial
var colour = getColourFromCookie();
if (colour == 'blue') {
$("#paint-blue").click();
}
// red is default, no need to do anything
});
您可以比示例站点做得更好的一件事是,您可以根据 cookie 值呈现不同的页面(不同的正文类),而不是总是呈现一个版本然后在客户端更改它 - 至少在我的计算机上有在 JS 启动并更改颜色之前有明显的延迟。