使用 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;
}

在行動中

看看這個小提琴是為了實現這些全域性布林值。