您可以将所有样式表包含在文档中,然后根据需要激活/停用它们。
在我阅读规范时,您应该能够通过更改其来激活备用样式表disabled属性从 true 到 false https://stackoverflow.com/revisions/19844757/5,但似乎只有 Firefox 可以正确执行此操作。
所以我认为你有几个选择:
Toggle rel=alternate
<link rel="stylesheet" href="main.css">
<link rel="stylesheet alternate" href="light.css" id="light" title="Light">
<link rel="stylesheet alternate" href="dark.css" id="dark" title="Dark">
<script>
function enableStylesheet (node) {
node.rel = 'stylesheet';
}
function disableStylesheet (node) {
node.rel = 'alternate stylesheet';
}
</script>
设置和切换disabled
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="light.css" id="light" class="alternate">
<link rel="stylesheet" href="dark.css" id="dark" class="alternate">
<script>
function enableStylesheet (node) {
node.disabled = false;
}
function disableStylesheet (node) {
node.disabled = true;
}
document
.querySelectorAll('link[rel=stylesheet].alternate')
.forEach(disableStylesheet);
</script>
Toggle media=none
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="light.css" media="none" id="light">
<link rel="stylesheet" href="dark.css" media="none" id="dark">
<script>
function enableStylesheet (node) {
node.media = '';
}
function disableStylesheet (node) {
node.media = 'none';
}
</script>
您可以选择样式表节点按 ID 获取元素 https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById, 查询选择器 https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector, etc.
(避免非标准<link disabled>
。环境HTMLLinkElement#disabled https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement#Properties不过还好。)