也许我想得太复杂了,但由于接受的答案对我不起作用,我想我也会分享我的解决方案。
故事:
我想做的是在头部包含我页面的不同“皮肤”作为附加样式表,这些样式表添加到“主要”样式中,并通过按下页面上的按钮来切换它们(没有浏览器设置或其他东西)。
问题:
我认为@sam 的解决方案非常优雅,但对我来说根本不起作用。至少部分问题是我正在使用一个主要的 CSS 文件,只是将其他文件添加到顶部作为“皮肤”,因此我必须使用缺少的“标题”属性对文件进行分组。
这是我想出的。
首先使用“alternate”将所有“皮肤”添加到头部:
<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++
});
它的作用是遍历所有可用的皮肤,获取(即将)激活的皮肤,将标题设置为“主”并激活它。所有其他皮肤都被禁用并且标题被删除。