[CSS] checkbox hack 模擬在網頁開視窗
Contents
什麼是 CSS Checkbox Hack?
CSS Checkbox Hack 是一種純 CSS 技巧,利用 <input type="checkbox"> 的 :checked 偽類選擇器,搭配 CSS 的兄弟選擇器(~),在不使用任何 JavaScript 的情況下實現 toggle(切換顯示/隱藏)效果。
基本原理
核心概念是:
- 一個隱藏的
checkbox輸入框 - 一個
<label>標籤綁定到該 checkbox(點擊 label 等同於點擊 checkbox) - 利用
:checked選擇器搭配~兄弟選擇器控制其他元素的樣式
模擬網頁開視窗(Modal)範例
以下是用 CSS Checkbox Hack 製作彈出視窗的完整範例:
|
|
|
|
運作流程
- 頁面載入時 checkbox 未勾選,
.modal-overlay為display: none - 使用者點擊「開啟視窗」label → checkbox 變為
:checked - CSS 選擇器
.modal-checkbox:checked ~ .modal-overlay生效,顯示遮罩 - 點擊「關閉」label → checkbox 取消勾選 → 遮罩再次隱藏
使用場景
- 導覽選單的展開/收合
- 手風琴(Accordion)效果
- Tab 切換
- 彈出視窗(Modal)
- 行動裝置漢堡選單
優缺點
優點:
- 不需要 JavaScript,純 CSS 實現
- 輕量,無額外依賴
缺點:
- 無障礙(Accessibility)支援較差
- HTML 結構較複雜
- 複雜互動仍建議使用 JavaScript