ID非公開さん
2022/1/27 21:37
3回答
cssとhtmlだけでinputタグを使ってクリックイベントを複数実装する方法教えていただけませんか? 自分で調べて実装しようとしたのですが、うまく適用されません。
cssとhtmlだけでinputタグを使ってクリックイベントを複数実装する方法教えていただけませんか? 自分で調べて実装しようとしたのですが、うまく適用されません。 どのように書くと、うまく適用できるかコードを教えてください。
HTML、CSS・54閲覧
ベストアンサー
「クリックイベント」は、 Javascript で操作するもので、 <input> タグではクリックイベントは操作できない。 おそらく、 ラジオボタンやチェックボックスによって、 要素の表示/非表示を切り替えたりする仕組みのことを 言っているんだと思うけど、 それはクリックイベントを操作しているんじゃなくて、 CSS の :checked 擬似クラスによるスタイルの切替えをしているだけ。 たとえば、 ──────────────── <input type="checkbox"> <div>あいうえお</div> ──────────────── のように構成した HTML に対して、 CSS で <div> 要素を display:none にして、 「チェックされたチェックボックスの後にある div 要素」を display:block でリセットすれば、 チェックボックスにチェックが入ったときだけ <div> が表示される。 ──────────────── [ type="checkbox" ] + div { display: none } [ type="checkbox" ]:checked + div { display: block } ──────────────── チェックボックスを表示したくない場合は、 チェックボックスを display:none にして、 代わりに <label> を置いて、 for 属性でチェックボックスの id 属性とリンクさせれば、 ラベルを切替えボタンとして <div> の表示/非表示を切替えれる。 ─[ HTML ]────────── <label for="myswitch">表示/非表示</label> … <input id="myswitch" type="checkbox"> <div>あいうえお</div> ─[ CSS ]─────────── [ type="checkbox" ] { display: none } [ type="checkbox" ] + div { display: none } [ type="checkbox" ]:checked + div { display: block } ──────────────── 複数の要素の表示/非表示をチェックボックスで切り替えたい場合も、 しくみは全く同じ。 チェックボックスと <label> をその個数分だけ用意すればいいだけ。 ─[ HTML ]────────── <label for="sw01">ボタン1</label> <label for="sw02">ボタン2</label> <label for="sw03">ボタン3</label> … <input id="sw01" type="checkbox"> <div>あいうえお</div> <input id="sw02" type="checkbox"> <div>かきくけこ</div> <input id="sw03" type="checkbox"> <div>さしすせそ</div> ─[ CSS ]─────────── label { display: block } [ type="checkbox" ] { display: none } [ type="checkbox" ] + div { display: none } [ type="checkbox" ]:checked + div { display: block } ────────────────
上記では、 チェックボックスのチェック状態 :checked によって、 <div> 要素の display を切替えたけど、 width や height を切替えれば長さやサイズ、 background-color を切替えれば背景色など、 切替えたいプロパティを :checked の有り無しで切り替えれば、 表示/非表示だけじゃなく 要素の色々なパラメータをチェックボックスで切り替えられる。
質問者からのお礼コメント
上記のコードのように書いたら、要素の表示/非表示の切り替えが行えました。おっしゃる通り、チェックボックスを利用して要素の表示/非表示を切り替える仕組みのことを言っていたのですが、最近html/cssを学習し始めたもので、表現の仕方がわからず、このような表現になりました。文章が分かりにくくてすみません。
お礼日時:1/28 18:08