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');

    })
})