JSFiddle - React, Tailwind, and code Playground
by annndrewww
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="style.css">
<title>Accordion</title>
</head>
<body>
<div class="wrapper">
<div class="accordion">
<div class="accordion-item">
<input class="input" type="checkbox" id="accordion-1">
<label class="accordion-item_trigger" for="accordion-1">Trigger 1</label>
<div class="accordion-item_content">Content 1</div>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
CSS
@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@700&display=swap');
body {
background-color: #414141;
color: #fff;
font-family: 'Raleway', sans-serif;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
margin: 0;
min-height: 100vh;
}
/* ACTIVE SCRIPT */
.accordion-item_active .accordion-item_trigger {
background-color: #414141;
}
.accordion-item_active .accordion-item_content {
display: block;
background-color: #414141;
}
input {
position: absolute;
top: 0;
left: 0;
opacity: 0;
}
.accordion-item {
margin-bottom: 20px;
position: relative;
}
.accordion-item_trigger {
padding: 20px;
border: 1px solid white;
display: block;
cursor: pointer;
}
.accordion-item_content {
padding: 20px;
border: 1px solid white;
border-top: none;
display: none;
}
JavaScript
document.querySelectorAll('.accordion-item_trigger').forEach((item) => {
item.addEventListener('click', () => {
const parent = item.parentNode;
parent.classList.toggle('accordion-item_active');
})
})