質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1330閲覧

cssでメニュー

caad

総合スコア8

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2016/04/05 06:35

###前提・実現したいこと
cssでドロップメニューを作成していて、「閉じる」項目を追加して、pcでクリックまたはスマホでタッチするとメニューを閉じられるようにしたいです。
ご教示頂けると幸いです><

※参考サイト
http://weboook.blog22.fc2.com/blog-entry-408.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
flat

総合スコア617

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

caad

2016/04/06 03:30

ご教示大変ありがとうございます!!! 無知で申し訳無いです。。 色々と奮起して試してみてはいるのですが、なかなかうまくいきません。。 「メニューを閉じた状態(初期状態)」にするにはどのようなルールセットを定義したらよいのでしょうか、、? 下記のようだとイメージとは離れてしまいまして。。 #switch:checked + #switch-label { visibility: hidden; } アドバイス頂けると大変ありがたいです><
flat

2016/04/06 12:26 編集

回答に追記しました。 分からない事があればまたコメントして下さればお答えします。
caad

2016/04/07 01:23 編集

分かりやすいご回答ありがとうございます! セレクタについてもとても勉強になりました! #switch(チェックボックス)の状態がオンの時、その直後にある#switch-label(ラベル)のそのまた直後にある.list(メニュー)を非表示にするセレクタを書いてみましたので誤りがありましたらご指摘をお願い致します。 #switch:checked + #switch-label + .list{ visibility: hidden; } #switch{ display: none; } また、下記の場合のHTMLに対してだと、どのような指定をしたらよろしいのでしょうか? <ul>  <li><a href="#">menu</a>   <ul>    <li><a href="#">list</a></li>    <li><a href="#">list</a></li>    <li><a href="#">list</a></li>    <li><a href="#">閉じる</a></li>   </ul>  </li> </ul> 度々で恐れ入ります。ご教示お願い致します。
flat

2016/04/07 07:53 編集

セレクタはそれでOKです。 理解が進んだようで何よりです。 > また、下記の場合のHTMLに対してだと、どのような指定をしたらよろしいのでしょうか? label 要素をクリックすることで、for 属性に指定したIDを持つチェックボックスを操作できるという点を利用しましょう。 「menu」をクリックしたときと、「閉じる」をクリックしたときの両方でチェックボックスを操作できるようにすると問題は解決するはずです。 ポイントは「チェックボックスを追加する位置」「ラベルを追加する位置」「セレクタの指定」です。 追記 質問をするときのひとつのアドバイスなのですが、自身で試してみたHTMLやCSSなどのコードは最初から提示された方が良いです。 これはコードが書きかけで完成していなかったり、内容に誤りがあったとしても構いません。 コードなどの詳細があった方が回答者も正確で具体的な回答をしやすいですし、その内容に誤りがあれば大抵は訂正してくれます。 また、そうする事で「やってほしいことだけを記載した丸投げの質問」という指摘を受けて質問の評価が下がり、質問が一覧に表示されず回答を得にくくなるという事も減るでしょう。 コードは質問する側と回答する側の双方にとって重要な情報となるので、また質問をされるときにコードが手元にあるのでしたら、ぜひ質問に含めてみてください。:)
flat

2016/04/08 21:12 編集

具体的な回答がないのも不親切かもしれないと思いましたので回答の方にコードを追記しておきました。 よろしければ参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問