loader image

コピペでOK シンプルでかっこいいアコーディオンメニューを作ろう 【Javascript】

アコーディオンメニューとはコンテンツの一部が隠されていて、クリックなどのアクションで隠されていたコンテンツが表示される開閉タイプのメニューです。

当サイトでもよくある質問ページで利用しています。

今回はこのアコーディオンメニューをコピペで実装するサンプルコードを書いていきたいと思いますので是非お使いください。

デモ

まずはデモで動作をご確認ください。

DEMO
隠れたコンテンツ出現
DEMO2
隠れたコンテンツ出現

今回は当サイトで使用しているアコーディオンメニュー(Q&A形式)をそのままご紹介します。

サンプルコード

ではサンプルコードをご紹介します。

HTML

<dl class="accordion js-accordion">
  <div class="accordion__item js-accordion-trigger"> <dt class="accordion__title"><span></span>DEMO</dt>
    <dd class="accordion__content">隠れたコンテンツ出現</dd>
  </div>
  <div class="accordion__item js-accordion-trigger"> <dt class="accordion__title"><span></span>DEMO2</dt>
    <dd class="accordion__content">隠れたコンテンツ出現</dd>
  </div>
</dl>

CSS

.accordion {
    width: 100%;
    display: grid;
    gap: 24px;
    font-size: 1.8rem;
}
.accordion__item {
    border: 1px solid #eee;
    cursor: pointer;
    border-radius: 3px;
}
.accordion__title {
    position: relative;
    padding: 15px 60px 15px 20px;
    font-weight: 500;
    cursor: pointer;
    display: flex;
}
.accordion__title::before, .accordion__title::after {
    content: "";
    position: absolute;
    right: 20px;
    top: 0;
    bottom: 0;
    margin: auto 0;
    background-color: #333;
    width: 16px;
    height: 1px;
    transition: all 0.3s;
}
.accordion__title span::before {
    content: "Q";
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -ms-flex-negative: 0;
    flex-shrink: 0;
    -webkit-transform: translateY(3px);
    transform: translateY(3px);
    background-color: #6e47ff;
    border-radius: 50%;
    width: 23px;
    height: 23px;
    color: #fff;
    font-family: "Roboto", sans-serif;
    font-weight: 700;
    font-size: 1.4rem;
    margin-right: 12px;
}
.accordion__content {
    padding: 0 20px 15px 20px;
    display: none;
    cursor: pointer;
}
.accordion__content.is-open {
    display: block;
}

Javascript

// アコーディオン
const accordions = document.querySelectorAll(".js-accordion");
const accordionsArr = Array.prototype.slice.call(accordions);

accordionsArr.forEach((accordion) => {
  const accordionTriggers = accordion.querySelectorAll(".js-accordion-trigger");
  const accordionTriggersArr = Array.prototype.slice.call(accordionTriggers);

  accordionTriggersArr.forEach((trigger) => {
    trigger.addEventListener("click", () => {
      trigger.classList.toggle("is-active");
      const content = trigger.querySelector(".accordion__content");
      slideToggle(content);
    });
  });
});

あとはCSSを実装したいWEBサイトのデザインに合わせて調節してください。

まとめ

いかがでしたでしょうか。

アコーディオンメニューのサンプルコードを紹介している記事はたくさんありますが、意外とスマートでシンプルなものが少なかったので、今回記事にしてみました。

皆さまの参考になれば、と思います。

集客できるホームページを私たちと作りませんか?😊

ホームページ制作やWEB集客に何かお悩みをお持ちでしたら、お気軽にお問い合わせください。👌

今はまだ発注するか決めていなてもまったく問題ありません。🙆

戻る

こちらもおすすめです