Vielleicht denke ich zu kompliziert, aber da die akzeptierte Antwort für mich nicht funktionierte, dachte ich, ich würde auch meine Lösung teilen.
Story:
Ich wollte verschiedene "Skins" meiner Seite als zusätzliche Stylesheets in den Kopf aufnehmen, die dem "Haupt" -Stil hinzugefügt wurden, und sie durch Drücken einer Schaltfläche auf der Seite wechseln (keine Browsereinstellungen oder ähnliches).
Problem:
Ich fand die Lösung von @ sam sehr elegant, aber sie hat bei mir überhaupt nicht funktioniert. Zumindest ein Teil des Problems besteht darin, dass ich eine Haupt-CSS-Datei verwende und nur andere als "Skins" hinzufüge. Daher musste ich die Dateien mit der fehlenden "title" -Eigenschaft gruppieren .
Folgendes habe ich mir ausgedacht.
Fügen Sie zuerst alle "Skins" mit "Alternate" zum Kopf hinzu:
<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=''>
Beachten Sie, dass ich der CSS-Hauptdatei den Titel = 'main' gegeben habe und alle anderen eine class = 'style-skin' und keinen Titel haben.
Zum Wechseln der Skins verwende ich jQuery. Ich überlasse es den Puristen, eine elegante VanillaJS-Version zu finden:
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++
});
Es durchläuft alle verfügbaren Skins, nimmt die (bald) aktive, setzt den Titel auf "main" und aktiviert ihn. Alle anderen Skins sind deaktiviert und der Titel wird entfernt.
lightunddarkin anderen Skripten / Stylesheets.