바닐라 자바스크립트를 사용하여 아코디언 만들기
2925 단어 csshtmlaccordionjavascript
먼저 아코디언의 HTML 뼈대를 만듭니다. 4개의 팩트 카드가 있습니다. 따라서 HTML은 아래와 같이 표시됩니다.
<div class="container">
<h2 class="accordion-title">Facts About Mars!</h2>
<div class="faq-container grid">
<div class="faq-item">
<header class="faq-header">
<i class="ri-add-line"></i>
<h4 class="faq-header-title">Also known as the Red Planet</h4>
</header>
<div class="faq-desp">
<p class="faq-desp-content">
This is because Mars is covered in soil, rock, and dust made from
iron oxide which gives the surface a red rusty colour
</p>
</div>
</div>
</div>
</div>
[faq-container 클래스가 있는 div] 안에 3개의 팩트 카드 [faq-item 클래스가 있는 div]가 더 있습니다. CSS 그리드를 사용하여 팩트 카드를 구성합니다.
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
우리의 목표는 카드 헤더[faq-header 클래스가 있는 헤더 태그]를 클릭하여 Facts 카드 설명[faq-desp 클래스가 있는 div 태그]을 표시하거나 숨기는 것입니다.
먼저 아래와 같이 CSS 속성 height: 0px 및 overflow: hidden을 사용하여 Facts 카드 설명을 숨깁니다.
.faq-desp {
overflow: hidden;
height: 0px;
}
이제 흥미로운 부분은 Javascript를 사용하여 설명을 전환(표시/숨기기)하는 것입니다. 아래 코드 조각:
const faqItems = document.querySelectorAll(".faq-item");
faqItems.forEach((faq) => {
const faqHeader = faq.querySelector(".faq-header");
faqHeader.addEventListener("click", () => {
const openFaq = document.querySelector(".faq-open");
toogleFaq(faq);
if (openFaq && openFaq !== faq) {
toogleFaq(openFaq);
}
});
});
const toogleFaq = (faq) => {
const faqDescription = faq.querySelector(".faq-desp");
if (faq.classList.contains("faq-open")) {
faqDescription.removeAttribute("style");
faq.classList.remove("faq-open");
} else {
faqDescription.style.height = faqDescription.scrollHeight + "px";
faq.classList.add("faq-open");
}
};
목표를 달성하기 위한 단계:
여기Code Sandbox의 codesandbox에서 전체 코드를 찾으십시오.
Reference
이 문제에 관하여(바닐라 자바스크립트를 사용하여 아코디언 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akshaykhot07/creating-an-accordion-using-vanilla-javascript-3o55텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)