使用 checkboxchecked 和(通用兄弟组合子)的全局布尔值

使用〜选择器,你可以轻松实现全局可访问的布尔值而无需使用 JavaScript。

添加布尔值作为复选框

在文档的最开头,使用唯一的 idhidden 属性集添加尽可能多的布尔值:

<input type="checkbox" id="sidebarShown" hidden />
<input type="checkbox" id="darkThemeUsed" hidden />

<!-- here begins actual content, for example: -->
<div id="container">
    <div id="sidebar">
        <!-- Menu, Search, ... -->
    </div>

    <!-- Some more content ... -->
</div>

<div id="footer">
    <!-- ... -->
</div>

更改布尔值

你可以通过添加 label 并设置 for 属性来切换布尔值:

<label for="sidebarShown">Show/Hide the sidebar!</label>

使用 CSS 访问布尔值

普通选择器(如 .color-red)指定默认属性。可以通过以下 true / false 选择器覆盖它们:

/* true: */
<checkbox>:checked ~ [sibling of checkbox & parent of target] <target>

/* false: */
<checkbox>:not(:checked) ~ [sibling of checkbox & parent of target] <target>

请注意,<checkbox>[sibling ...]<target> 应该由适当的选择器替换。[sibling ...] 可以是一个特定的选择器,(通常,如果你是懒惰的)只是*或如果目标已经是复选框的兄弟,则没有。

上述 HTML 结构的示例如下:

#sidebarShown:checked ~ #container #sidebar {
    margin-left: 300px;
}

#darkThemeUsed:checked ~ #container,
#darkThemeUsed:checked ~ #footer {
    background: #333;
}

在行动中

看看这个小提琴是为了实现这些全局布尔值。