API
아코디언 플러그인 활용하여 FAQ 자주 묻는 질문 구현하기
dauneee
2022. 3. 28. 12:54
1. jQuert 연결하기
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="anonymous"></script>
2. ul - li 활용하여 리스트 생성해주고 클래스명 지정해주기
<ul class="accodian">
<li class="accodian--box">
<!-- 제목 -->
<h5 class="question">[리뷰] 리뷰 수정 또는 작성 어떻게 하나요?</h5>
<!-- 내용 -->
<div class="answer">
작성하신 리뷰를 수정 혹은 삭제하고 싶으신 경우, <br> <br> 내정보 페이지에서 수정/삭제 하실
리뷰를 선택하신 후 우측 하단에 삭제 및 수정 아이콘을 누르시면 변경 가능합니다. <br> <br>
앞으로도 지속적인 서비스 이용과 관심 부탁드립니다.<br> <br> 감사합니다.
</div>
</li>
<li class="accodian--box">
<!-- 제목 -->
<h5 class="question">[탈퇴] 탈퇴는 어떻게 하나요?</h5>
<!-- 내용 -->
<div class="answer">
마이페이지 > 회원탈퇴를 통해 회원 탈퇴가 가능합니다.<br> 탈퇴 후에는 계정 복구가 불가능하오니
신중히 선택해주시기 바랍니다.
</div>
</li>
<li class="accodian--box">
<!-- 제목 -->
<h5 class="question">[리뷰] 리뷰 또는 사진 신고가 필요한 경우</h5>
<!-- 내용 -->
<div class="answer">
모든 사용자는 커뮤니티 가이드 라인에 위배 되는 리뷰나 사진을 신고할 수 있습니다. <br> 이
가이드라인 방침에 따라 다음과 같은 경우 콘텐츠가 삭제될 수 있습니다. <br> <br> 1. 리뷰 또는
사진이 다른 경우 <br> <br> 2. 리뷰 또는 사진이 스팸인 경우 <br> <br>
3. 리뷰 또는 사진에 개인정보, 명예훼손 또는 사생활 침해 또는 홍보권 침해가 포함되는 경우 <br> <br>4.
리뷰 또는 사진이 실제 식사 경험을 기반으로 하지 않았을 경우 <br> <br> 5. 리뷰 또는 사진이
지불댓가로 업로드 된 경우 <br> <br> 신고 접수가 된 후 내부적으로 신고 대상
리뷰를 검토하고 커뮤니티 가이드라인을 준수하지 않은 경우 신고된 콘텐츠를 제거합니다.
</div>
</li>
</ul>
3. 각 지정한 클래스에 CSS 적용해주기
<style type="text/css">
.accodian {
list-style: none
}
.accodian--box {
margin-bottom: 5px;
}
.accodian--box h5 {
padding: 5px;
cursor: pointer
}
.accodian--box div {
padding: 5px;
display: none;
}
.question:hover {
font-weight: bold;
}
.answer {
color: #777777;
}
.container box_1170{
display: flex;
justify-content: center;
}
</style>
4. 자바스크립트를 활용하여 아코디언 함수 생성해주기
<script type="text/javascript">
var accModule = function() {
// private member (비공개 멤버, 고유멤버)
var acc_wrap = $('.accodian'), question = acc_wrap.find('h5'), answer = question
.next('div');
// privilieged member(공용 인터페이스)
return {
runInit : function() {
this.accHandler();
},
accHandler : function() {
var accodian = {
targetClick : function(e) {
var eTarget = $(e.currentTarget);
if (eTarget.next().is(':visible')) {
eTarget.next().slideUp();
return;
}
answer.slideUp();
eTarget.next().slideDown();
}
};
question.on('click', accodian.targetClick);
}
}
}();
// 실행
accModule.runInit();
</script>