ボタンクリックで指定したアコーディオンを開く方法【HTML/CSS/JavaScript・サンプルコード付き】
アコーディオン
2026.06.17
ボタンクリックで指定したアコーディオンを開く方法
HTML・CSS・JavaScriptを使って、ボタンをクリックすると指定したアコーディオンを自動で開く方法を紹介します。このサンプルでは、ボタンを押すとURLハッシュ(URL末尾の「#faq1」のような文字列)を利用して対象のアコーディオンを開きます。FAQページ、ヘルプページ、商品説明ページなどで、目的の項目へ直接案内したい場合に便利です。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項
本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
ボタンクリックで指定したアコーディオンを開く
ボタンをクリックすると、指定したアコーディオンが自動で開きます。
URLの末尾に付く #faq1 のような文字列で、特定の要素を指定できます。
FAQやヘルプページで、目的の項目を直接開きたい場合に使えます。
HTML、CSS、JavaScriptの3つのファイルで作成できます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コードを指定 -->
<meta charset="UTF-8">
<!-- スマホ表示に対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>ボタンクリックで指定したアコーディオンを開く</title>
<!-- CSSファイルを読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- デモ全体を囲むエリア -->
<div class="url-hash-open-accordion_wrap">
<!-- タイトル -->
<div class="url-hash-open-accordion_title">
ボタンクリックで指定したアコーディオンを開く
</div>
<!-- 説明文 -->
<p class="url-hash-open-accordion_text">
ボタンをクリックすると、指定したアコーディオンが自動で開きます。
</p>
<!-- 開くボタン一覧 -->
<div class="url-hash-open-accordion_links">
<a href="#faq1">
FAQ1を開く
</a>
<a href="#faq2">
FAQ2を開く
</a>
<a href="#faq3">
FAQ3を開く
</a>
</div>
<!-- アコーディオン項目 -->
<div class="url-hash-open-accordion_item" id="faq1">
<button class="url-hash-open-accordion_button" type="button">
URLハッシュとは?
</button>
<div class="url-hash-open-accordion_content">
URLの末尾に付く #faq1 のような文字列で、特定の要素を指定できます。
</div>
</div>
<!-- アコーディオン項目 -->
<div class="url-hash-open-accordion_item" id="faq2">
<button class="url-hash-open-accordion_button" type="button">
どんな場面で使う?
</button>
<div class="url-hash-open-accordion_content">
FAQやヘルプページで、目的の項目を直接開きたい場合に使えます。
</div>
</div>
<!-- アコーディオン項目 -->
<div class="url-hash-open-accordion_item" id="faq3">
<button class="url-hash-open-accordion_button" type="button">
必要なファイルは?
</button>
<div class="url-hash-open-accordion_content">
HTML、CSS、JavaScriptの3つのファイルで作成できます。
</div>
</div>
</div>
<!-- JavaScriptファイルを読み込み -->
<script src="script.js"></script>
</body>
</html>
/* ページ全体の設定 */
body{
margin:0;
font-family:sans-serif;
background:#ffffff;
}
/* デモ全体を囲むエリア */
.url-hash-open-accordion_wrap{
max-width:700px;
margin:40px auto;
padding:32px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#f8fafc;
}
/* タイトル */
.url-hash-open-accordion_title{
font-size:22px;
font-weight:700;
margin-bottom:12px;
text-align:center;
}
/* 説明文 */
.url-hash-open-accordion_text{
margin-bottom:24px;
color:#4b5563;
text-align:center;
}
/* 指定したアコーディオンを開くボタン一覧 */
.url-hash-open-accordion_links{
display:flex;
justify-content:center;
gap:10px;
margin-bottom:20px;
flex-wrap:wrap;
}
/* 指定したアコーディオンを開くボタン */
.url-hash-open-accordion_links a{
padding:10px 14px;
border-radius:8px;
background:#0b6bff;
color:#ffffff;
font-weight:700;
text-decoration:none;
}
/* アコーディオン項目 */
.url-hash-open-accordion_item{
margin-bottom:12px;
border:1px solid #e5e7eb;
border-radius:12px;
background:#ffffff;
overflow:hidden;
}
/* アコーディオンボタン */
.url-hash-open-accordion_button{
width:100%;
padding:16px 18px;
border:none;
background:#ffffff;
color:#111827;
font-weight:700;
text-align:left;
cursor:pointer;
display:flex;
align-items:center;
justify-content:space-between;
}
/* 開閉アイコン */
.url-hash-open-accordion_button::after{
content:"+";
color:#0b6bff;
font-weight:700;
}
/* 開いている時のアイコン */
.url-hash-open-accordion_item.is-open .url-hash-open-accordion_button::after{
content:"-";
}
/* アコーディオンの中身 */
.url-hash-open-accordion_content{
display:none;
padding:0 18px 18px;
color:#4b5563;
line-height:1.8;
}
/* 開いている時の中身 */
.url-hash-open-accordion_item.is-open .url-hash-open-accordion_content{
display:block;
}
// アコーディオンボタンをすべて取得
const urlHashAccordionButtons=document.querySelectorAll(".url-hash-open-accordion_button");
// アコーディオン項目をすべて取得
const urlHashAccordionItems=document.querySelectorAll(".url-hash-open-accordion_item");
// 各アコーディオンボタンにクリックイベントを設定
urlHashAccordionButtons.forEach(function(button){
button.addEventListener("click",function(){
// クリックした項目を開閉
button.parentElement.classList.toggle("is-open");
});
});
// URLハッシュに合わせて指定したアコーディオンを開く処理
function openAccordionFromHash(){
// URL末尾の #faq1 などを取得
const hash=window.location.hash;
if(!hash){
return;
}
// ハッシュと同じidを持つ項目を取得
const targetItem=document.querySelector(hash);
if(!targetItem){
return;
}
// すべてのアコーディオンを閉じる
urlHashAccordionItems.forEach(function(item){
item.classList.remove("is-open");
});
// 指定したアコーディオンを開く
targetItem.classList.add("is-open");
// 指定した位置へ移動
targetItem.scrollIntoView({behavior:"smooth",block:"center"});
}
// ページ読み込み時にURLハッシュを確認
window.addEventListener("load",openAccordionFromHash);
// URLハッシュが変わった時に指定したアコーディオンを開く
window.addEventListener("hashchange",openAccordionFromHash);
ファイル構成と設置方法
このサンプルでは、HTML・CSS・JavaScriptをそれぞれ別ファイルに分けて使用します。index.html、style.css、script.js を同じフォルダに配置してください。
sample/
├── index.html
├── style.css
└── script.js
index.html をブラウザで開くと、ボタンをクリックして指定したアコーディオンを開けます。URL末尾の #faq1、#faq2、#faq3 に合わせて、対象のアコーディオンが自動で開きます。
ボタンクリックで指定したアコーディオンを開く方法【HTML/CSS/JavaScript・サンプルコード付き】
コメント