detailsタグでクリックで開閉するFAQコンテンツ

Ads

Result


detailsタグでFAQコンテンツっぽいやつを作るサンプルです
JSも使わずCSSの力業も不要なのでコードもスッキリ見やすいですね
例によってIEでは使えないHTMLタグですが、便利には違いないですね
summaryにoutline: none;を付けないとクリック時にボーダーが表示されてしまいます。

css

summary {
  display: block;
  outline: none;
}

summary:before {/*矢印アイコンを付与*/
  display: inline-block;
  content: "›";
  margin-right: 0.5rem;
  font-weight: bold;
  font-size: 1rem;
  transition: all 300ms ease;
}

/*答え部分が開いている場合の処理*/
details[open] summary {
  color: red;
  transition: all 300ms ease;
}
details[open] p {
  animation: openDetail 400ms ease;
  background: #f9f9f9;
}
details[open] summary::before {
  transform: rotate(90deg);
}

@keyframes openDetail {/*アニメーション設定*/
  0% {
    opacity: 0;
    background: white;
    transform: translateY(0%);
  }
  50% {
    transform: translateY(3%);
  }
  100% {
    opacity: 1;
    background: #f9f9f9;
    transform: translateY(0%);
  }
}

html

<details role="group">
  <summary role="button" aria-expanded="false"><strong>hoge?</strong></summary>
  <p>hogehogehogehoge
    hogehogehogehogehoge
    hogehogehogehogehoge
    hogehogehogehogehoge
    </p>
</details>

can i use


details及びsummaryタグのブラウザサポート状況です

via

Using the HTML5 Details Tag for FAQs