目次
はじめに
今回は実務経験で作成した「よくある質問セクションのアコーディオンメニュー」をご紹介します。
以前下記記事でも紹介しましたが、
よくある質問アコーディオン
よくある質問のアコーディオンメニューのHTML・CSS・JavaScriptのソースコードを紹介しています。またjQueryを使用しないパターンも紹介しています。
今回作成したものは以下の点で違っています。
・デザイン
・JavaScriptで実装している部分が以前と比べてよりslideToggle()に近いものになっている。
・JavaScriptで実装している部分が以前と比べてよりslideToggle()に近いものになっている。
よくある質問アコーディオン(jQueryで実装)
よくある質問アコーディオン(jQueryで実装)動き
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
よくある質問アコーディオン(jQueryで実装)ソースコード
PR
<div class="faq__list">
<div class="faq__item">
<div class="faq-q">
<div class="faq__mark">Q.</div>
<div class="faq-q__txt">質問テキスト質問テキスト質問テキスト質問テキスト?</div>
<span class="icon-right"></span>
</div>
<div class="faq-a">
<div class="faq__mark">A.</div>
<div class="faq-a__txt">
<p>回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト</p>
</div>
</div>
</div>
<div class="faq__item">
<div class="faq-q">
<div class="faq__mark">Q.</div>
<div class="faq-q__txt">質問テキスト質問テキスト質問テキスト質問テキスト?</div>
<span class="icon-right"></span>
</div>
<div class="faq-a">
<div class="faq__mark">A.</div>
<div class="faq-a__txt">
<p>回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト</p>
</div>
</div>
</div>
<div class="faq__item">
<div class="faq-q">
<div class="faq__mark">Q.</div>
<div class="faq-q__txt">質問テキスト質問テキスト質問テキスト質問テキスト?</div>
<span class="icon-right"></span>
</div>
<div class="faq-a">
<div class="faq__mark">A.</div>
<div class="faq-a__txt">
<p>回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト</p>
</div>
</div>
</div>
</div>
.faq-q {
position: relative;
background-color: #ffeedd;
cursor: pointer;
}
.faq-a {
position: relative;
display: none;
}
.faq__mark {
position: absolute;
text-align: center;
font-weight: 700;
border: 1px solid #094;
border-radius: 50%;
}
.faq-q .faq__mark {
color: #fff;
background-color: #094;
}
.faq-q__txt {
font-weight: 700;
}
.icon-right::before {
content: "";
position: absolute;
top: 50%;
right: 0;
width: 30px;
height: 30px;
border-top: 4px solid #094;
border-right: 4px solid #094;
transform: translate(-65%,-50%) rotate(45deg);
}
.faq-a .faq__mark {
color: #094;
background-color: #fff;
}
.faq__list p {
line-height: 2;
}
@media screen and (min-width: 768px) {
.faq__item:nth-of-type(n+2) {
margin-top: 30px;
}
.faq-q {
padding: 20px 60px 20px 80px;
}
.faq-a p {
padding: 20px 60px 0 80px;
}
.faq__mark {
width: 40px;
line-height: 40px;
font-size: 22px;
top: 18px;
left: 20px;
}
}
@media screen and (max-width: 767px) {
.faq__item:nth-of-type(n+2) {
margin-top: 35px;
}
.faq__mark {
width: 30px;
line-height: 30px;
font-size: 18px;
top: 25px;
left: 20px;
}
.faq-q__txt {
padding: 20px 50px 20px 70px;
line-height: 1.4;
}
.faq-a__txt {
padding-top: 20px;
}
.faq-a p {
padding: 0 14px 0 70px;
}
}
jQuery(".faq-q").on('click', function() {
jQuery(this).next('.faq-a').slideToggle();
});
よくある質問アコーディオン(純粋なJavaScriptで実装)
前回作成したものよりもslideToggle()の動きに近くなっていると思います。
よくある質問アコーディオン(純粋なJavaScriptで実装)動き
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
Q.
質問テキスト質問テキスト質問テキスト質問テキスト?
A.
回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト回答テキスト
よくある質問アコーディオン(jQueryで実装)ソースコード
PR
HTMLは共通です。CSSも下記以外は共通です。
.faq-a {
position: relative;
height: 0;
opacity: 0;
visibility: hidden;
transition: all 0.5s;
}
.faq-a.open {
opacity: 1;
visibility: visible;
}
const faqQElements = document.querySelectorAll(".faq-q01");
faqQElements.forEach(function(element) {
element.addEventListener("click", function() {
const faqA = element.nextElementSibling;
const faqATxt = faqA.querySelector(".faq-a__txt");
faqA.classList.toggle("open");
if (faqA.classList.contains("open")) {
faqATxtHeight = faqATxt.offsetHeight;
faqA.style.height = faqATxtHeight + 'px';
} else {
faqATxtHeight = faqATxt.offsetHeight;
faqA.style.height = '';
}
});
});
他のHTML・CSS ・JavaScriptソースコード紹介記事まとめ
ソースコードまとめ
実務経験で作成したレイアウトのHTML・CSS ・JavaScriptソースコードを紹介した記事まとめています。