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

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

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

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

3回答

2913閲覧

CSSのみでアコーディオンメニューをつくりたい

rntk

総合スコア16

CSS3

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2019/09/02 05:30

CSSのみでアコーディオンメニューを作成したいと考えていますが、思ったような形になりません。

こちらのページ(https://saruwakakun.com/html-css/reference/accordion#section3)における「応用例:矢印を表示&切替」と同様、Font Awesome 5 Freeのアイコンをラベルに表示させ、ラベルをクリックするとアイコンが切り替わってコンテンツが出現するようにしたいです。

現状

HTML

1<div class="accbox"> 2 <input type="checkbox" id="label1" class="cssacc" /> 3 <label for="label1">あああ</label> 4 <div class="accshow"> 5 <p>あああ</p> 6 </div> 7 <input type="checkbox" id="label2" class="cssacc" /> 8 <label for="label2">いいい</label> 9 <div class="accshow"> 10 <p>いいい</p> 11 </div> 12 <input type="checkbox" id="label3" class="cssacc" /> 13 <label for="label3">ううう</label> 14 <div class="accshow"> 15 <p>ううう</p> 16 </div> 17</div>

CSS

1.accbox { 2 margin: 2em 0; 3 padding: 0; 4 max-width: 400px; 5} 6 7.accbox label { 8 display: block; 9 margin: 1.5px 0; 10 padding : 10px 12px; 11 color: #ffffff; 12 font-weight: bold; 13 background: #003e9c; 14 cursor :pointer; 15 transition: all 0.5s; 16} 17 18.accbox label:before { 19 content: "\f054"; 20 font-family: "Font Awesome 5 Free"; 21 font-weight: 900; 22 padding-right: 8px; 23} 24 25.accbox label:hover { 26 background :#001f4d; 27} 28 29.accbox input { 30 display: none; 31} 32 33.accbox .accshow { 34 height: 0; 35 padding: 0; 36 overflow: hidden; 37 opacity: 0; 38 transition: 0.8s; 39} 40 41.cssacc:checked + label + .accshow { 42 height: auto; 43 padding: 5px; 44 background: #fff5eb; 45 opacity: 1; 46}

問題点・解決したいこと

  • そもそもアコーディオンが機能しない、コンテンツが開かない(矢印は変化します)
  • 最上部のラベルのみ文字が中央寄せになり、なおかつ文字の大きさも他のラベルとは異なってしまう
  • ラベル間の高さを調整できない

基本的に参考サイトと同様にコーディングしましたが、アイコンが表示されなかったのでそのあたりだけを変更しています。

ご教授のほど、何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

そもそもアコーディオンが機能しない、コンテンツが開かない(矢印は変化します)

最上部のラベルのみ文字が中央寄せになり、なおかつ文字の大きさも他のラベルとは異なってしまう

ご質問者様のコードと同じものですが、機能するようです。
https://jsfiddle.net/4L7320rf/

つまり機能しない原因は他のところにあると思います。こちらで再現できる状態までなんとか頑張っていただければうれしいのですが。


ラベル間の高さを調整できない

上のリンク(つまりご質問者様のコード)の.accbox labelmargin: 1.5px 0;margin: 30px 0;にすればできますので、これができない原因もご質問のコード以外にあると思います。


そもそもCSSを読んでないとか、他のCSSが影響しているのでは?開発ツール(F12)を開いて、該当のラベルとかに他のCSSが絡んでないか見てみてください。

投稿2019/09/02 12:47

hotaruika

総合スコア57

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

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

rntk

2019/09/02 23:45

早速のご回答をありがとうございます。 コード自体は機能するのですね。コードを確認できるサイトがあること自体知りませんでした。 他のCSSが絡んでいないか確認したいと思います。ありがとうございました。
guest

0

Wordpressによってpタグが自動挿入されていたのが問題だったようです。

Wordpress上では、pタグは「あああ」等のクリック後に表示される文字列に対してのみ使用されていたので問題ないと思っていましたが、実際のページを開発者ツールで見てみると下記のようになっていました。

HTML

1<div class="accbox"> 2 <input type="checkbox" id="label1" class="cssacc"> 3 <label for="label1">あああ</label> 4 <p></p> 5 <div class="accshow"> 6 <p>あああ</p> 7 </div> 8 <p> 9 <input type="checkbox" id="label2" class="cssacc"> 10 <label for="label2">いいい</label> 11 </p> 12 <div class="accshow"> 13 <p>いいい</p> 14 </div> 15 <p> 16 <input type="checkbox" id="label3" class="cssacc"> 17 <label for="label3">ううう</label> 18 </p> 19 <div class="accshow"> 20 <p>ううう</p> 21 </div> 22</div>

参照元によれば、コード中にbrタグやpタグが自動挿入されてしまうとアコーディオンが開かなくなってしまうようなので、これをどうにか解決したいと思います。

ご回答いただいたお二方、ありがとうございました。

投稿2019/09/03 05:43

rntk

総合スコア16

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

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

cofcof

2019/09/03 07:55

セレクタの + は直後の要素に対しての指定なので、pが入ると動かなくなってしまいます。 ~ を使用するとそれ以降の要素になるので、そのあたり修正しても動くかもしれませんね。
guest

0

ちょっと書いてみました。
こんな形でいかがでしょうか。
section部分がアコーディオンで開く部分です。
当初はmax-heightを0かつoverflow-yをhiddenにしているので非表示、
チェックが入った場合のみ、最大の高さを100emに設定しています。
最低限の部分のみ記述しているので、適宜書き直していただければ良いかと思います。

HTML

1<ul class="nav_ul"> 2 <li> 3 <input type="checkbox" id="hd_01" class="hd_ac"> 4 <label for="hd_01"> 5 <h2>Menu</h2> 6 </label> 7 <section> 8 <ul> 9 <li><a href="#"><span>Menu2</span></a></li> 10 <li><a href="#"><span>Menu2</span></a></li> 11 <li><a href="#"><span>Menu2</span></a></li> 12 </ul> 13 </section> 14 </li> 15 <li> 16 <input type="checkbox" id="hd_02" class="hd_ac"> 17 <label for="hd_02"> 18 <h2>Menu</h2> 19 </label> 20 <section> 21 <ul> 22 <li><a href="#"><span>Menu2</span></a></li> 23 <li><a href="#"><span>Menu2</span></a></li> 24 <li><a href="#"><span>Menu2</span></a></li> 25 </ul> 26 </section> 27 </li> 28</ul>

CSS

1.hd_ac ~ section { 2 background: #fff; 3 max-height: 0; 4 overflow-y: hidden; 5 transition: 0.5s; 6} 7.nav_ul li .hd_ac:checked + label { 8 background: #e5e5e5; 9} 10l.nav_ul li:hover label { 11 background: #e5e5e5; 12} 13.hd_ac:checked ~ section { 14 max-height: 100em; 15 transition: 1s 16} 17.hd_ac { 18 display: none; 19} 20.nav_ul li label::before { 21 display: block; 22 position: absolute; 23 top: 50%; 24 left: 1.5rem; 25 transform: translateY(-50%); 26 line-height: 1; 27 font-family: 'Font Awesome 5 Free'; 28 font-weight: 900; 29 content: "\f054"; 30 transition: 0.2s; 31 transform-origin: 0.5rem 0.25rem; 32} 33.nav_ul li .hd_ac:checked ~ label::before { 34 transform: rotate(90deg); 35}

投稿2019/09/03 05:16

cofcof

総合スコア37

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

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

rntk

2019/09/03 05:34

ご回答ありがとうございます。 まだまだ知識不足ですが、ご回答いただいた内容をもとにしていろいろと書き直してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問