js
[j-query] FAQ, Q&A 아코디언 활용해서 만들기 (slideToggle, accordion)
beaksul
2022. 1. 14. 15:43
HTML
<ul class="faq">
<li class="q">
<p>Q1</p>
<img src="images/arrow.png" alt="화살표">
</li>
<li class="a">
<p>A1</p>
</li>
<li class="q">
<p>Q2</p>
<img src="images/arrow.png" alt="화살표">
</li>
<li class="a">
<p>A2</p>
</li>
<li class="q">
<p>Q3</p>
<img src="images/arrow.png" alt="화살표">
</li>
<li class="a">
<p>A3</p>
</li>
</ul>
html 구성은 위처럼 li에 클래스를 줘도 되고 div를 써도 되고 자유롭게 가능하다.
(어차피 제이쿼리에서 next()를 쓸 거라서)
CSS
.faq{
border-top: 1px solid #dbdbdb;
}
.faq .q{
display: flex;
justify-content: space-between;
border-bottom: 1px solid #dbdbdb;
align-items: center;
padding: 20px 30px;
cursor: pointer;
}
.faq .q img{
width: 20px;
height: 10px;
}
.faq .q img.rotate{
transform: rotate(180deg);
}
.faq .a{
border-bottom: 1px solid #dbdbdb;
padding: 0 30px;
background-color: #f8f8f8;
display: none;
}
.faq .a{
display: flex;
padding: 20px 30px;
}
JS
$("document").ready(function(){
$(".q").click(function(){
$(".a").slideUp()
if($(this).next().is(":visible")){
$(this).next().slideUp()
} else{
$(this).next().slideDown()
}
let arrow = $(this).children("img")
$(".q img").not(arrow).removeClass("rotate")
arrow.toggleClass("rotate")
})
})