跳至內容
Astera Technology

剔選框改狀態,父層也可以跟住變

不用 JavaScript,也可用 :has(input:checked) 令本地示範框邊線跟剔選狀態改變。

未剔是灰色,已剔是綠色;例子內沒有程式。

下載完整個案資料及參考答案 ↓

先看這個例子

勾選框意思是「突出這個示範」,只改本地邊線,不批准或放行任何紀錄。

輸入與瀏覽器原生結果
情況輸入或查看方法結果與意思
未剔查看原生已選狀態父層邊線灰色
已剔剔選勾選框父層邊線綠色
配對方向查看父層 :has按後代狀態配對父層
下載可編輯 CSV ↓

瀏覽器怎樣處理

:has 是以父層為錨點的關係選擇器,可按相對選擇器配對已剔後代。原生勾選框提供狀態,CSS 提供顯示規則;仍須核對真正引擎支援。

後代選擇器不會往上找父層

反例把 .sample 寫在 input:checked 後面,變成找 input 內的後代。

反例原始碼,請另開例子核對
<style>body{margin:8px}</style>
<style>.sample{border:2px solid rgb(140,140,140)}input:checked .sample{border-color:rgb(0,80,40)}</style><section class="sample"><label><input id="show" type="checkbox">突出這個示範</label></section>

剔選後父層仍灰色,因為該選擇器在本樹沒有配對元素。

試着修正

剔選這個顯示示範,是否等於放行存貨?

查看參考答案

不是,只實作 CSS 邊線變色。業務放行須有自己的已授權操作。

  • 關閉 JavaScript,查看真正原生剔選。
  • 核對支援及邊線計算值,不用靜態綠框假定成功。

原始例子檔案

相關資源