使用〜选择器,您可以轻松实现全局可访问的布尔值,而无需使用JavaScript。
在文档的开头,根据需要添加具有唯一性id和hidden属性集的布尔值:
<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>
普通选择器(如.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; }
有关这些全局布尔值的实现,请参见此提琴。