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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

372閲覧

CSS【アコーディオン発動時の挙動についての疑問】

Ashi

総合スコア139

CSS3

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2017/05/28 06:30

閲覧ありがとうございます。
どうしてもわからないことがありましたので、お答え頂けますと幸いです。

###概要

・HTML/CSSのみでアコーディオンを作成しています。 ・その際のCSSの挙動でいくつか不明点があります。 ・不明点の理由解説や改善案をいただけると非常に嬉しいです。

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

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>アコーディオン</title> <style> .Btn_open, .Btn_close{ width :300px; line-height:50px; display :block; text-align :center; background :#aaa; transition:.9s; } .Area{ margin:0; background:lime; width:500px; transition:.9s; } .Box{ padding:20px; width:600px; max-height:0; overflow:hidden; /*box-sizing:border-box;*/ background:green; transition:.9s; } #open:checked ~ .Box{ max-height:800px; overflow:visible; /*box-sizing:border-box;*/ } .Footer{ margin-top:0; line-height:30px; background:#555; } </style> </head> <body> <input type="checkbox" id="open"> <label for="open"> <span class="Btn_open">OPEN</span> </label> <div class="Box"> <div class="Area"> <P>コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント</P> </div> <label for="open" class="Btn_close"> <span>CLOSE</span> </label> </div> <div class="Footer"> <p>フッター</p> </div> </body> </html>

###1:「box-sizing:border-box」が効かない理由
初期値は「.Box」の高さを「0」に設定しています。
「padding」が含まれているので、初期値でpaddingの高さが表示されないよう、
「box-sizing:border-box」を設定しているのですが効いていないようです。
なぜでしょうか?

###2:アコーディオンがイメージ通りに開かない
「OPEN」をクリックしたときにアコーディオンが開くように設定しましたが、
「緑背景の部分」が滑らかに開くのに対し、
「黄緑のコメント部分」や「CLOSEボタン」が背景のように滑らかに出現しません。
エリア全体を滑らかに開かせる何か良い方法はありますでしょうか?

###3:フッターの上部の余白は?
margin:0を設定しても、フッターの上部に余白ができてしまいます。
これをなくすにはどのようにしたらよいでしょうか?

###補足情報
・可能な限り「CSSのみ」での実装を希望しています。
・緑背景部分の高さは「内容(コメント)の分量によってある程度可変する様にしたいので、
「heiht」での固定数値の指定は避けたいです。

以上、お手数をお掛けしますが
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

最終的にやりたいイメージが掴めてないので違うかも^^
動きが分かり易いように時間を1.9sにしています。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>アコーディオン</title> <style> *{ margin: 0; padding: 0; } .Btn_open, .Btn_close{ width :300px; line-height:50px; display :block; text-align :center; background :#aaa; } .Area{ margin: 20px; background:lime; overflow:hidden; width: 500px; transition: 1.9s; } .Area p{ padding: 20px; overflow:hidden; transition: 1.9s; } .Area label{ overflow:hidden; transition: 1.9s; } .Box{ width:600px; max-height:0; overflow:hidden; box-sizing:padding-box; background:green; transition: 1.9s; } #open:checked ~ .Box{ max-height:800px; overflow:hidden; box-sizing:border-box; transition: 1.9s; } #open ~ .Box{ overflow:hidden; box-sizing:border-box; transition: 1.9s; } .Footer{ margin-top:0; line-height:30px; background:#555; box-sizing: border-box; } </style> </head> <body> <input type="checkbox" id="open"> <label for="open"> <span class="Btn_open">OPEN</span> </label> <div class="Box"> <div class="Area"> <P>コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント<br> コメントコメントコメントコメントコメント</P> </div> <label for="open" class="Btn_close"> <span>CLOSE</span> </label> </div> <div class="Footer"> <p>フッター</p> </div> </body> </html>

投稿2017/05/28 22:23

編集2017/05/28 22:27
kyunta

総合スコア350

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

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

Ashi

2017/05/29 13:03

ご回答ありがとうございます! 解決しました!とても参考になる情報をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問