也许我想的太复杂了,但是由于可接受的答案对我不起作用,所以我想我也将分享我的解决方案。
故事:
我想做的是将页面的不同“皮肤”作为其他样式表添加到“主要”样式中,并通过按页面上的按钮来切换它们(没有浏览器设置或内容)。
问题:
我认为@sam的解决方案非常优雅,但是对我来说根本不起作用。问题的至少一部分是,我使用了一个主CSS文件,并且仅将其他文件添加为“皮肤”,因此我不得不使用缺少的“ title”属性对文件进行分组。
这是我想出的。
首先使用“ alternate”将所有“ skins”添加到头部:
<link rel="stylesheet" href="css/main.css" title='main'>
<link rel="stylesheet alternate" href="css/skin1.css" class='style-skin' title=''>
<link rel="stylesheet alternate" href="css/skin2.css" class='style-skin' title=''>
<link rel="stylesheet alternate" href="css/skin3.css" class='style-skin' title=''>
请注意,我给主CSS文件指定了title ='main',其他所有文件都有一个class ='style-skin',没有标题。
要切换皮肤,我使用的是jQuery。我让纯粹主义者找到一个优雅的VanillaJS版本:
var activeSkin = 0;
$('#myButton').on('click', function(){
var skins = $('.style-skin');
if (activeSkin > skins.length) activeSkin=0;
skins.each(function(index){
if (index === activeSkin){
$(this).prop('title', 'main');
$(this).prop('disabled', false);
}else{
$(this).prop('title', '');
$(this).prop('disabled', true);
}
});
activeSkin++
});
它的作用是遍历所有可用的皮肤,获取(很快的)活动皮肤,将标题设置为“ main”并激活它。其他所有皮肤均被禁用,标题被删除。
light
以及dark
其他脚本/样式表。