Madogiwa Blog

主に技術系の学習メモに使っていきます。

HTML: details/summary要素を使ってカスタムアコーディオンを作るメモ📝

details/summary要素を使うと

developer.mozilla.org

以下のようなアコーディオンのようなUIをブラウザ標準機能として簡単に実装できます。

<details>
  <summary >accordion</summary>
  <div >Hello!!</div>
</details>

以下のようなアイコン等をカスタムしたアコーディオンを作るときにちょっとハマりどころがあったのでメモ📝

結論は以下のようなコードになりました。

See the Pen custom-accordion-by-details-tag by madogiwa (@madogiwa0124) on CodePen.

<details class="accordion">
  <summary class="accordion-summary">accordion</summary>
  <div class="accordion-content">Hello!!</div>
</details>
.accordion {
  padding: 0;
  margin: 20px 0;
  border: 1px solid black;

  &[open] {
    .accordion-summary {
      &::after {
        content: 'Close';
      }
    }
  }
  
  .accordion-summary {
   cursor: pointer;
   background-color: grey;
   padding: 8px;
   
   /* デフォルトアイコンの削除 */ 
   list-style: none;
   &::-webkit-details-marker { /* for safari */ 
     display: none
   }

   &::after {
    content: 'Open'; 
    font-size: 16px;
    float: right; /* アイコンを右端に配置 */
   }
  }
  
  .accordion-content{
     padding: 8px;
   }
}

ポイントとしては、

おわり

参考

catnose.me

note.com