忍者CODE

ログイン

3
CSSのみでアコーディオンを実装しよう

PHPの問題

HTML_CSS

Googleでログイン Twitterでログイン
問題
CSSのみでアコーディオンを実装してみましょう。

また、要素をクリックするとアニメーションで
パカパカアコーディオンになるようにしましょう。

見本を参考に作成してください。
期待する画面
ログインして解答を見る
コードのアイコン

解答ソースコード

            <section>
  <input class="checkbox-input" type="checkbox" id="checkBox">
  <label class="checkbox-label" for="checkBox">ここを押下するとアコーディオンが開きます</label>
  <ul class="accordion-cat">
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
  </ul>
  <input class="checkbox-input" type="checkbox" id="checkBox2">
  <label class="checkbox-label checkbox-label--red" for="checkBox2">ここを押下するとアコーディオンが開きます</label>
  <ul class="accordion-cat">
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
  </ul>
  <input class="checkbox-input" type="checkbox" id="checkBox3">
  <label class="checkbox-label checkbox-label--green" for="checkBox3">ここを押下するとアコーディオンが開きます</label>
  <ul class="accordion-cat">
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
    <li>アコーディオンの内容が入ります。</li>
  </ul>
</section>
¥HTML¥
          
            section {
    display: inline-block;
}
.checkbox-input {
    display: none;
}
.checkbox-label {
    cursor: pointer;
    display: inline-block;
    padding: 16px;
    background-color: #0e6edf;
    color: #fff;
}
.checkbox-label--red {
    background-color: red;
}
.checkbox-label--green {
    background-color: green;
}
.checkbox-label::before {
    content: "▼";
    padding-right: 4px;
}
.checkbox-input:checked + .checkbox-label::before {
    content: "ー";
}
.accordion-cat {
  margin: 0 0 2px 0;
}
.accordion-cat li {
    max-height: 0;
    overflow-y: hidden;
    transition: all 0.5s;
    text-align: center;
}

.checkbox-input:checked + .checkbox-label + .accordion-cat > li {
    max-height: 46px;
    opacity: 1;
    padding: 10px;
    visibility: visible;
}
¥CSS¥
          
答えのアイコン

解説

CSSのみでのアコーディオン実装で肝なのは
チェックボックスを使用するということです。
inputがcheckdの時にコンテンツを出すといたって単純なことをやっております。

まず、inputとlabelを連動する為にはinputのid属性とlabelのfor属性を同じ名前にします。
その際にinputのチェックボックスは、display: none;で消しときましょう。
そして、開いた時のコンテンツにはデフォルト値として
max-height: 0;とoverflow-y: hidden;を付与しておきます。

こうしておく事で、視認できなくなり要素は隠れます。

そして、セレクタを上手く使用してinputにcheckdがついたら隠しておいた要素に高さをつけ見えるようにします。アニメーションについては、隠す要素のデフォルト値にtransition: all 0.5s;などすれば、アニメーションできます。
1.HTMLの宣言をしてみよう
続きの動画を見たい方は公式LINEから「HTML」と送信すると動画が見れます。
コース一覧のアイコン

有料コース一覧
甲賀KOGA

プログラミングスキルが
一気に上がる!
有料級の解説動画19本
を今なら無料でGETできる!

忍者CODEの公式LINE登録後
LINE内にあるURLよりご覧になれます

  • プログラミング本気で学習してる方
  • もちろん完全無料で且つ手続き不要
  • 将来プログラミングで稼ぎたい方
  • 動画解説で真剣に学びたい方
スキルアップ動画をGET