728x90
반응형
- HTML
<div class="accordion">
<b>Heading 1</b>
</div>
<div class="panel">
<p class="text-light">Text 1</p>
</div>
<div class="accordion">
<b>Heading 2</b>
</div>
<div class="panel">
<p class="text-light">Text 2</p>
</div>
<style>
div.panel {
display: none;
}
div.panel.show {
display: block !important;
}
</style>
- JS
var acc = document.getElementsByClassName("accordion");
var panel = document.getElementsByClassName('panel');
for (var i = 0; i < acc.length; i++) {
acc[i].onclick = function() {
var setClasses = !this.classList.contains('active');
setClass(acc, 'active', 'remove');
setClass(panel, 'show', 'remove');
if (setClasses) {
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
}
function setClass(els, className, fnName) {
for (var i = 0; i < els.length; i++) {
els[i].classList[fnName](className);
}
}
출처
반응형
'Dev > Frontend' 카테고리의 다른 글
React typescript로 초기 프로젝트 설정하기. + 기본 라이브러리 (0) | 2022.07.30 |
---|---|
리액트의 Hydration의 이해 (0) | 2022.07.30 |
[React] props와 state (0) | 2020.01.22 |
[React] 리액트 기본세팅, 실행, 빌드 (0) | 2020.01.22 |
공통 css class에 클릭 이벤트 (0) | 2019.11.26 |