JavaScriptを使わずにCSSだけで他要素のスタイルを変える方法
概要
JavaScriptを使ったDOM操作のようなものをCSSのみで実現させる。
目指すは超軽量レスポンシブメニュー。
実装
簡単なコード
CSS
#switch{
display: none;
}
#change{
width: 100px;
height: 50px;
background-color: lightgray;
}
#field{
width: 100px;
height: 100px;
background-color: red;
}
#switch:checked ~ #field{
background-color: blue;
}
HTML
<body>
<div id="wrap">
<input type="checkbox" id="switch">
<label for="switch">
<div id="change">button</div>
</label>
<div id="field"></div>
</div>
</body>
動作
#switch{
display: none;
}
#change{
width: 100px;
height: 50px;
background-color: lightgray;
}
#field{
width: 100px;
height: 100px;
background-color: red;
}
#switch:checked ~ #field{
background-color: blue;
}
<body>
<div id="wrap">
<input type="checkbox" id="switch">
<label for="switch">
<div id="change">button</div>
</label>
<div id="field"></div>
</div>
</body>
buttonと書かれている灰色のエリアをクリックすると、下の四角の色が赤色もしくは青色に変わる。
仕組み
labelを使用したチェックボックスの切り替え
キーとなるのは<input type="checkbox">
と<label>
である。
<label>
にfor=(inputのid)
を指定すると、<label>
内の要素をクリックすることで<input type="checkbox">
のon/offを切り替えることが出来る。
疑似クラス「:checked」
:checked
は擬似クラスというものの一種だそうです。分類に関しては詳しくありませんので間違いがあるかもしれません。
使用方法を簡単に言えば、チェックボックスがONの場合のstyleを設定することが出来ます。
今回はこれを利用して通常の<div id="field">
は赤色、チェックが入った状態の<input type="checkbox">
の弟である<div id="field">
は青色、という二パターンを記述しています。
応用してレスポンシブメニューを作ってみる
結論
素直にJavaScriptを使えば良いと思う。
頭の体操というか遊び目的でやってみると意外と楽しいかもしれません。
参考サイト
Author And Source
この問題について(JavaScriptを使わずにCSSだけで他要素のスタイルを変える方法), 我々は、より多くの情報をここで見つけました https://qiita.com/motsu/items/2f85f439543f6b0414c0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .