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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

1916閲覧

ホバーしてない時にサイドバーを閉じたい

pyonsomi

総合スコア13

CSS3

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2016/12/28 07:00

編集2016/12/28 07:03

##ホバーしてない時に<ul>も閉じたい

HTMLとCSSのみでサイドバーのドロップダウンメニューを作っています。

理想としては
(例)
検索アイコンhover>サイドバーが開く>”検索”をタッチ>検索内容<ul>が出てくる
→サイドバーからホバーを外すとアイコンだけの状態にもどる
→再度、アイコンにホバーするとさっきまで開いていた<ul>まで開いている状態になる

という動きにしたいです。

###ホバーをしていない時にも<ul>が表示されてしまっている。

ドロップダウンが開くのは”ランキング”と”検索”なのですが、

<ul>がホバーをしていない状態の時に、サイドバー全体を閉じたいのですが、<ul>が隠れずに 表示されたままになってしまいます。チェックボックスで動かしているからだとは思うのですがその非表示のやり方がわからないです。 ![イメージ説明](bd01c3c13db14131e654fc273b2e93a5.png)

###該当のソースコード

<div class="sidebar-menu"> <div class="air"> </div> <div class="ranking"> <img src="http://52.40.205.220/athlete_curation/wp-content/uploads/2016/11/a50232dcdd5a809c7eae3ed090de1824.png" width="30" height="30" > <div class="menu"> <label for="Panel1" class="ranking-label">ランキング</label> <input type="checkbox" id="Panel1" class="on-off"> <ul> <li><a href="<?php echo home_url()?>/ranking?order=income">年収</a></li> <li><a href="<?php echo home_url()?>/ranking?order=pv">PV</a></li> <li><a href="<?php echo home_url()?>/ranking?order=favorite">お気に入り数</a></li> <li><a href="<?php echo home_url()?>/ranking?order=facebook_count">Facebook</a></li> <li><a href="<?php echo home_url()?>/ranking?order=twitter_count">Twitter</a></li> <li><a href="<?php echo home_url()?>/ranking?order=instagram_count">Instagram</a></li> </ul> </div> </div> <div class="search"> <img src="http://52.40.205.220/athlete_curation/wp-content/uploads/2016/11/fc0d49c34763a3abbbe4b1f8769c4fac.png" width="30" height="30" > <div class="menu"> <label for="Panel12" class="search-label">検索</label> <input type="checkbox" id="Panel12" class="on-off"> <ul> <form method="get" action="<?php echo home_url();?>/"> <li>名前<input type="text" name="s"></li> <li class="sports-select"> <p>競技</p> <select name="sport"> <option value="">指定しない</option> </select> </li> <li class="country-select"> <p>国</p> <select name="country"> <option value="">指定しない</option> </select> </li> <li class="japan-select"> <p>都道府県</p> <select name="prefecture"> <option value="">指定しない</option> </select> </li> <li class="team-select"> <label> <input type="checkbox" class="checkbox" name="genre[]" value="アスリート"> <span class="checkbox-icon"></span>個人 </label> <label> <input type="checkbox" class="checkbox" name="genre[]" value="チーム"> <span class="checkbox-icon"></span>チーム </label> <label> <input type="checkbox" class="checkbox" name="genre[]" value="団体"> <span class="checkbox-icon"></span>団体 </label> </li> <li class="age-select"> <p>年代</p> <select name="age"> <option value="">指定しない</option> <option value="10s">10代</option> <option value="20s">20代</option> <option value="30s">30代</option> <option value="40s">40代</option> <option value="50s">50代</option> </select> </li> <li class="gender-select"> <label> <input type="checkbox" class="checkbox" name="gender[]" value="男"> <span class="checkbox-icon"></span>男 </label> <label> <input type="checkbox" class="checkbox" name="gender[]" value="女"> <span class="checkbox-icon"></span>女 </label> </li> <li class="search-button" > <p><input type="submit" value="検索する"></p> </li> </ul> </div> </div> <div class="favorite"> <img src="http://52.40.205.220/athlete_curation/wp-content/uploads/2016/11/5d41ec9755613f57d91c21edc1649965.png" width="30" height="30"> <div class="menu"> <a href="#" class="drop-p">お気に入り</a> </div> </div> <div class="contact"> <img src="http://52.40.205.220/athlete_curation/wp-content/uploads/2016/11/7d7d841c0282be482ee4343b934887c5.png" width="30" height="30" > <div class="menu"> <a href="#" class="drop-p">サイト制作</a> </div> </div> </div>
/*サイドバー*/ .sidebar-menu{ width:50%; height:400px; } .sidebar-menu:hover .air{ background-color: rgba(0,0,0,0.5); width: 18.8%; height: 100%; position: absolute; left: 12%; z-index: -1; transition:all .5s ease-out; } .menu{ position:relative; left:-50%; } .sidebar-menu:hover .menu{ position:relative; left:20%; } input[type="checkbox"].on-off{ display: none; } .menu ul { color:rgba(255,255,255,1); background-color:rgba(0,0,0,0.8); width:180px; margin:0 0 0 40%; padding:0 0 0 0; -webkit-transition: all 0.5s; -moz-transition: all 0.5s; -ms-transition: all 0.5s; -o-transition: all 0.5s; transition: all 0.5s; list-style: none; z-index:auto; } input[type="checkbox"].on-off + ul{ height: 0; overflow: hidden; } input[type="checkbox"].on-off:checked + ul{ height: auto; } /*.ranking ランキング*/ .ranking img{ margin:20% 0 0 0; } .ranking-label{ margin:-10% 0 0 0; color: #fff; padding: 0 0 0 10px; display: block; } .ranking a{ text-decoration: none; display:block; color:rgba(255,255,255,1); margin:0 0 3% 0; padding:1% 0 0 0%; font-size: 14px; text-align: left; } /*.search 検索*/ .search ul{ margin-top:10%!important; } .search img{ margin:10% 0 0 0; } .search-label{ margin:-10% 0 0 0; color: #fff; padding: 0 0 0 10px; display: block; } .menu select{ width:60%; } .sports-select p{ display:inline-block; font-size:14px; padding:3% 20% 0 0; } .sports-select select{ border-radius: 3px; border-color:floralwhite; background-color: floralwhite; margin:10% 0 0 0 ; } .country-select p{ display:inline-block; font-size:14px; margin:0 0 0 0; padding:5% 27% 0 0; } .country-select select{ border-radius: 3px; border-color:floralwhite; background-color: floralwhite; } .japan-select p{ display:inline-block; font-size:14px; margin:4% 0 0 0; padding:5% 5% 0 0; } .japan-select select{ border-radius: 3px; border-color:floralwhite; background-color: floralwhite; } .team-select{ font-size: 14px; margin:8% 0 0 0 ; } .age-select p{ display:inline-block; font-size:14px; margin:4% 0 0 0; padding:3% 20% 0 0; } .age-select select{ border-radius: 3px; border-color:floralwhite; background-color: floralwhite; } .gender-select{ font-size: 14px; margin:8% 0 0 0 ; } .search-button input{ background-color:firebrick; color: #fff; padding:5% 20%; margin:3% 0 10% 15%; border-radius: 6px; } .search-button input:hover{ background-color:crimson; } /*.favotite お気に入り*/ .favorite a{ display:block; margin:-10% 0 0 0; padding:0 0 0 10px; text-decoration: none; color:rgba(255,255,255,1) } .favorite img{ margin:10% 0 0 0 ; } /*.contact 制作依頼*/ .contact img{ margin:20% 0 0 0; } .contact a{ display:block; margin:-10% 0 0 0; padding:0 0 0 10px; text-decoration: none; color:rgba(255,255,255,1) } .contact img{ margin:20% 0 0 0 ; }

初心者なもので、小手先技術で作った結果どこに手をだしてよいのかすら謎になってしまいました。。。よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

チェックボックスで動かしているからだとは思うのですがその非表示のやり方

.sidebar-menuからホバーが外れた際に検索のチェックボックスを外すようにjsで実装する。

もし理想形を実現するのであれば、
さらにここでフラグを立てとく必要があるかと思います。
(例)
条件1:チェックボックスにチェックがしてあった場合。
⇒ 次回、ホバー時にチェックボックスにチェックを入れる。

条件2:チェックボックスにチェックがしていない場合。
⇒ そのまま


そもそも...
htmlとcssのみだと限界があるので無理にhtmlとcssのみで組む必要は無いと思います。

一例として..

  1. サイドメニューエリアをホバー(フォーカス)した際にメニューを表示。

  2. 「検索」をクリックで階層を表示

※ inputではなく、<a> で実装

  1. 2を押した場合、フラグを立てておく(display:blockになるようなclass付与でもOK)

4.サイドメニューエリアからホバー(フォーカス)が外れた場合、メニューを全体を非表示。

  1. 再度、サイドメニューエリアにホバーした際は、全体を表示。

⇒ 3でclassを付与しているのですべてが表示される。

こんな感じで組めばいけるかと。


あと非表示にするのに

css

1input[type="checkbox"].on-off + ul{ 2 height: 0; 3 overflow: hidden; 4}

css

1height: 0;

ではなく

css

1display: none;

がよいかと。。

投稿2016/12/28 08:16

takumaro_web

総合スコア301

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

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

pyonsomi

2016/12/29 06:44

まだjQueryを勉強していなかった為、無理やりHTMLとCSSで作ろうとしたのですがやはりjQueryが良いですね。。。 時間はかかかりますがやってみようと思います!ありがとうございます!
guest

0

開いたリストは閉じませんが

CSS

1.menu{ 2position:relative; 3left:-100%; 4}

に変えれば表示は消えますね

投稿2016/12/28 08:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問