「詳細」ブロックを「アコーディオン(トグル)」ブロック風にし1つだけ開き他を閉じる方法

Cocoonカスタマイズ集
この記事は約7分で読めます。
記事内に広告が含まれています。

はじめに

Gutenbergエディター

WordPress 6.8から、「詳細」ブロックにname属性を指定できるようになりました(図1参照)。

同じグループに属する「詳細」ブロックには、同一のname属性を入力すると、クリックした1つだけを開き、他を閉じるようになります。

この仕組みを利用して、「詳細」ブロックを活用し、特定の表示動作を実現します。

この記事では、この方法について説明します。

SWELLの「アコーディオン」ブロックは、Cocoonとは異なり、<details>タグで構成されています。

「アコーディオン(トグル)」ブロック風

完成イメージ

ホワイトスネイク

生物の記憶とスタンド能力を、CDのような形状の「DISC」にして取り出す、能力を持つ。

C-MOON

ホワイトスネイクと、緑色の赤ちゃんが融合してできたスタンド。半径約3km以内にある物体の重力の方向を、本体のプッチ神父を中心に、逆転させる能力を持つ。

メイド・イン・ヘブン

C-MOONが進化したスタンド。全世界の時を、加速させる能力を持つ。

実装手順

スキンのデザインに合わせるため、以下のコードをstyle.cssに追加します。

  • ラベル
    Gutenbergエディターでの設定
    Gutenbergエディター

    以下の手順で設定します。

    1. 「詳細」ブロックを選択し、高度な設定→name属性に例えばa1と入力します。
    2. 「詳細」ブロック内の各ブロックをグループ化します。
    3. グループ全体に対して、高度な設定→追加CSSクラスにdetails-contentと入力します。
    4. 複数の「詳細」ブロックをグループ化し、高度な設定→追加CSSクラスにmy-accordionと入力します。
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    /* Safari */
    summary::-webkit-details-marker {
      display: none;
    }
    
    .my-accordion {
      details {
        border: 1px solid #ccc;
        margin-bottom: 30px;
    
        &[open] {
          summary::after {
            content: '\f106';
          }
        }
      }
    
      summary {
        background-color: #ccc;
        font-weight: bold;
        list-style: none;
        padding: 15px calc(15px + 1em) 15px 15px;
        position: relative;
    
        &::after {
          align-items: center;
          content: '\f107';
          display: flex;
          font-family: 'Font Awesome 5 Free';
          font-weight: 900;
          height: 100%;
          position: absolute;
          right: 1em;
          top: 0;
        }
      }
    
      .details-content {
        padding: 15px;
      }
    }

「タイムライン」ブロック風

完成イメージ

ホワイトスネイク

生物の記憶とスタンド能力を、CDのような形状の「DISC」にして取り出す、能力を持つ。

C-MOON

ホワイトスネイクと、緑色の赤ちゃんが融合してできたスタンド。半径約3km以内にある物体の重力の方向を、本体のプッチ神父を中心に、逆転させる能力を持つ。

メイド・イン・ヘブン

C-MOONが進化したスタンド。全世界の時を、加速させる能力を持つ。

実装手順

スキンのデザインに合わせるため、以下のコードをstyle.cssに追加します。

  • ラベル
    Gutenbergエディターでの設定
    Gutenbergエディター

    以下の手順で設定します。

    1. 「詳細」ブロックを選択し、高度な設定→name属性に例えばt1と入力します。
    2. 「詳細」ブロック内の各ブロックをグループ化します。
    3. グループ全体に対して、高度な設定→追加CSSクラスにdetails-contentと入力します。
    4. 複数の「詳細」ブロックをグループ化し、高度な設定→追加CSSクラスにmy-timelineと入力します。
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    /* Safari */
    summary::-webkit-details-marker {
      display: none;
    }
    
    .my-timeline {
      details {
        padding-bottom: 15px;
        position: relative;
    
        &:last-of-type {
          padding: 0;
        }
    
        &::before {
          background-color: #eee;
          content: "";
          display: block;
          height: 100%;
          left: 7px;
          position: absolute;
          top: 0;
          width: 3px;
          z-index: -1;
        }
    
        &::after {
          background-color: #ff0000;
          border-radius: 100%;
          content: "";
          display: block;
          height: 16px;
          left: 0;
          position: absolute;
          top: 7px;
          width: 16px;
        }
      }
    
      summary {
        font-weight: bold;
        list-style: none;
        padding-left: 25px;
      }
    
      .details-content {
        padding: 0 0 0 25px;
      }
    }

さいごに

今回紹介した方法を使えば、「詳細」ブロックを活用して、「アコーディオン(トグル)」ブロック風や「タイムライン」ブロック風のUIを簡単に実現できます。
特にWordPress 6.8以降の新機能であるname属性を活用することで、ユーザーの利便性も高まります。

なお、WordPress 6.9からは標準の「アコーディオン」ブロックが追加されれました。

タイトルとURLをコピーしました