問題

20
HTML/CSS

アコーディオンメニューを作ってみよう

max-heightとoverflowを使ったアニメーションの制御を学習します。実務でもよく使用されるものになるので是非ここで習得しておきましょう!

HTML/CSSの問題に挑戦しよう!

問題

アコーディオンメニューを作ってみよう

以下のコードを使って、クリックで展開されるアコーディオンメニューを作成してください。

あらかじめエディタに書くコード

                    <!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>アコーディオンメニュー</title>
</head>
<body>
    <button class="accordion">セクション 1</button>
    <div class="panel">
        <p>セクション 1 の内容。</p>
    </div>

    <button class="accordion">セクション 2</button>
    <div class="panel">
        <p>セクション 2 の内容。</p>
    </div>

    <script>
        const accordions = document.querySelectorAll(".accordion");

        accordions.forEach(accordion => {
            accordion.addEventListener("click", function() {
                this.classList.toggle("active");
                
                const panel = this.nextElementSibling;
                if (panel.style.maxHeight) {
                    panel.style.maxHeight = null;
                } else {
                    panel.style.maxHeight = panel.scrollHeight + "px";
                }
            });
        });
    </script>
</body>
</html>
¥HTML¥
                

期待する画面

解答の画像

解答と解説(アコーディオンメニューを作ってみよう)

解説

LINE登録して解答を見る

※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます

アコーディオンメニューは、max-heightを使ってコンテンツの表示と非表示を制御します。
初期状態ではmax-height: 0に設定され、overflow: hiddenでコンテンツが隠されます。
ユーザーがボタンをクリックすると、max-heightが増加し、コンテンツが展開されます。

transition: max-height 0.2s ease-outを使用することで、アニメーションが滑らかに行われます。これによって、動的なUIを実現し、ユーザーがクリック操作で情報を確認しやすくなります。

さらにスキルアップしたい方は公式LINEから「HTML/CSS」と送信すると動画が見れます。

LINE登録して動画を視聴する
あなたに合った学習プランは?LINE適正コース診断はこちら