検証する説
今回お持ちした説は、こちらです。
※ devroomさんを使わせていただきました。
どのような仕組みか
-
<input type="checkbox">
のid属性
と、<label>
のfor属性
で関連づけさせることができる。-
<label>
をクリックすると、チェックの切り換えが可能になる。
-
- チェックボックスがチェックされている時、チェックボックスの状態が
checked
になるため、疑似クラスセレクター:checked
が使える。 - 要素の後ろにある同じ階層のセレクタの指定(
~
)を駆使すれば、その状態を他要素に伝えることができ、表示の変更が可能。
これらをフルで使うことによって、on/off切り換え機能を伴うUIはすべてCSSのみで実装が可能であると考えました。
※ 仕組みがわかりやすいように、あえて直タグでスタイルを当てております。良い子は真似しないでください。
※ デザインは仕組みが伝わるレベルです。
1. アコーディオン
アコーディオンがHTML・CSSのみで作れる!という話をよく聞くので、これは確実にいけそうですね!
※ details/summary
を使えばいいやん!と思った方もいるかもですが、あくまで今回は検証のため、checkbox
とlabel
で実装します。
2. ハンバーガーメニュー
ハンバーガーメニューも、理屈はアコーディオンと同じなので、作れそう!
htmlの構造はビミョーですが、ハンバーガーメニューとしては機能するものができました!
3. モーダル
用件を満たせるかは怪しいけど、無理やり頑張れば行けそう...
labelタグを使いまくることで、モーダルを開くボタンをクリックすると開き、×ボタンもしくはoverlayをクリックすると閉じるモーダルが完成しました。
検証結果
※ こちらも[devroom](https://devroom.azurewebsites.net/Generator/WednesdayResult)さんを使わせていただきました。実装はできますが、コードの可読性の低下や、意味合いを意識したマークアップができないなどの懸念がございます。
止むを得ずjavascriptが使えない場合のみ、参考にしていただけたらなと思います。