• js

アコーディオンを作ってみよう

はじめに

メニューボタンを押したら隠れていた情報が表示されるような物を作りたいのですが、どのようにしたらいいですか?
それはアコーディオンと呼ばれるものですね。メニューを押すとそのメニューに対応する情報が表示されるといったものです。
アコーディオンと言うのですね。
それは作るのが難しいでしょうか。
そうですね。cssとjavascriptをうまく使うと実現可能です。サンプルコードと合わせてご説明していきましょうか。

アコーディオンを実装します。

今回の記事では、cssとjavascriptを使ってアコーディオンを作成してきたいと思います。

サンプルコード

HTML

<!DOCTYPE html>
<head>
  <title>アコーディオンを作ってみよう</title>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="style.css"\>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
</head>
<body>
  <div class="accordion">
    <div class="demo_menu">>Menu1</div>
    <div class="content">
      <ul>
        <li><a href="">情報1</a></li>
		<li><a href="">情報2</a></li>
		<li><a href="">情報3</a></li>
      </ul>
    </div>
	<div class="demo_menu">>Menu2</div>
    <div class="content">
      <ul>
        <li><a href="">情報4</a></li>
		<li><a href="">情報5</a></li>
		<li><a href="">情報6</a></li>
      </ul>
    </div>
  </div>
  <script src="common.js"></script>
</body>
</html>

CSS

.accordion .content{
    display:none;
}
.demo_menu{
    text-align:center;
    width:300px;
    height:2em;
    background:blue;
    color:#fff;
    border-bottom:1px solid #fff;
}
.demo_menu.open{
    background:red;
}

js

$('.accordion .demo_menu').on('click',function(){
    $(this).toggleClass('open');
    $(this).next('.content').slideToggle();
});


上記のコードの考え方としては、htmlのMenu1、Menu2には、demo_menuというクラスがついています。まずこちらがクリックされたかどうかをjqueryを使って判断させます。
demo_menuがクリックされた際、そのdemo_menuというクラスがついている次のcontentというクラスが slideToggle() (表示されていなければ下にスライドしながら中身を表示させ、表示されていれば、スライドしながら非表示にするといった動きをするもの)されるといった動きで今回は、アコーディオンを実装しています。また、クリックされたdemo_menuには、メニューが開いていますといったことをコードに伝えるために、openというクラスが展開中は付加されるようにしています。
このopenをつけることで、メニューが展開されている時の挙動をcss側でデザインなどを変更することができます。今回はcssで展開中は背景が赤くなるように設定しています。

サンプルコードの実装例


上記のサンプルプログラムを実装しますと、このような動きになります。
クリックイベントを取得して、そのクリックされたdemo_menuに対応するcontentを表示、非表示を切り替えることで実現されています。
また展開された時にopenのクラスがついていますので、背景を変えたりといったことができるようになります。

関連記事

  1. ふりがなの付け方

  2. CSSで文字の間隔を変更してみた

  3. javascript講座 – ログを出力する –…

  4. javascriptを使って特定の要素に特定のクラスがあるかを調べよう…

  5. 見出しの前に三角形をつけてみよう

  6. 特定の番号の要素のcssだけ変更してみよう

2024年4月
1234567
891011121314
15161718192021
22232425262728
2930  
Translate »