###前提・実現したいこと
cssでドロップメニューを作成していて、「閉じる」項目を追加して、pcでクリックまたはスマホでタッチするとメニューを閉じられるようにしたいです。
ご教示頂けると幸いです><
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
input
要素のtype
属性の値をcheckbox
にしてチェックボックスを作成してください。
あとはCSSの擬似クラス:checked
でチェックボックスがチェックされている時に特定のルールセットを適用させることができます。
例えば次のHTMLとCSSではチェックボックスをチェックした時にlabel
要素のテキストカラーを赤にすることができます。
つまり、要素の状態を切り替えることができます。
HTML
1<input id="switch" type="checkbox"> 2<label id="switch-label" for="switch">label text</label>
CSS
1#switch:checked + #switch-label { 2 color: red; 3}
これをうまく利用すると「メニューを閉じた状態(初期状態)」と「メニューを開いた状態(チェック状態)」をクリックまたはタッチで作り出すことができます。
あとはご自分でルールセットを定義していけば求めているドロップメニューを作成できるはずなので、ぜひ頑張って作ってみてください。
追記
回答にあるCSSのセレクタ#switch:checked + #switch-label
が何を意味しているのかを理解してみましょう。
#switch**:checked**
:checked
擬似クラスはラジオボタンとチェックボックスおよびオプションボタンがオンになっている状態を表します。
ここでは「#switchというIDを与えたチェックボックスがチェックされている状態」を意味します。
###+
これは隣接兄弟セレクタといい、直後(隣)にある要素を指定するセレクタです。
ここでは#switch
の直後に存在する要素である#switch-label
を指定しています。
つまり「#switch
というIDを与えたチェックボックスの状態が:checked
(オン)になった時に、直後に存在する要素#switch-label
のテキストカラーを赤にする」というルールセットを定義している事が分かります。
なお、この様なセレクタは複数を組み合わせて利用することも出来ます。
例えば#a:hover + #b + #c
とすると「#a
にマウスカーソルが当たった時、その直後にある#b
のそのまた直後にある#c
に宣言したブロックの内容を適用する」という意味のセレクタになります。
###これらを踏まえた上でイメージしやすいHTMLにしてみましょう。
HTML
1<!-- 切り替えのスイッチとなるチェックボックス --> 2<input id="switch" type="checkbox"> 3<!-- for属性を使えばラベルからチェックボックスをチェックできる --> 4<label id="switch-label" for="switch">menu</label> 5 6<!-- 状態を切り替えたい要素(メニュー) --> 7<ul class="list"> 8 <li>item</li> 9 <li>item</li> 10 <li>item</li> 11</ul>
ここでチェックボックス#switch
をチェックした時にリスト.list
を非表示にするには、どのようなルールセットを定義すると良いでしょうか?
大分イメージしやすくなっているのではないでしょうか。
#switch
(チェックボックス)の状態がオンの時、その直後にある#switch-label
(ラベル)のそのまた直後にある.list
(メニュー)を指定するセレクタを書いてみてください。
最後にCSSのセレクタをまとめたページがあったのでリンクしておきます。
CSS3のセレクタ全42種 まとめておさらい使い方リファレンス - EXP - クリエイティブな事をはじめた(い)全ての人達へ
具体的なコードを追記しておきます。
HTML
1<!-- 2 チェックボックスはリストの外側に置いても良いですが、隣接させた方がセレクタの誤りを防止できて、隣接兄弟セレクタひとつで済むので楽です。 3 <a href="#">menu</a>となっていた箇所をラベルに変更しています。 4--> 5<ul> 6 <li><label for="switch">menu</label><input id="switch" type="checkbox"> 7 <ul> 8 <li><a href="#">list</a></li> 9 <li><a href="#">list</a></li> 10 <li><a href="#">list</a></li> 11 <li><label for="switch">閉じる</label></li> 12 </ul> 13 </li> 14</ul>
CSS
1#switch { 2 display: none; 3} 4 5#switch:checked + ul { 6 visibility: hidden; 7}
投稿2016/04/05 13:04
編集2016/04/08 21:11総合スコア617
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/06 03:30
2016/04/06 12:26 編集
2016/04/07 01:23 編集
2016/04/07 07:53 編集
2016/04/08 21:12 編集