dropdowns
by ShaCP
HTML
<body>
<div id="main-container">
<div id="overlay" class="hidden"></div>
<div role="button" tabindex="0" class="section">
<h3>Some<br />text</h3>
</div>
<div class="collapsible hidden">Hidden</div>
<div role="button" tabindex="0" class="section">
<h3>Some<br />text</h3>
</div>
<div class="collapsible hidden">Hidden</div>
</div>
<button>
Overlay
</button>
</body>
CSS
body {
font-family: sans-serif;
box-sizing: border-box;
font-size: 2em;
}
#main-container {
border: 1px solid black;
display: inline-block;
position: relative;
min-width: 500px;
}
.section {
text-align: center;
margin: 10px 0;
display: flex;
justify-content: center;
padding-right: 1em;
}
.section::before {
content: "";
background-image: url("https://upload.wikimedia.org/wikipedia/commons/2/24/TriangleArrow-Right.svg");
background-size: 1em 1em;
width: 1em;
height: 1em;
display: inline-block;
align-self: center;
justify-content: left;
margin-left: 0.1em;
}
.down::before {
transform: rotate(90deg);
}
h3 {
flex: auto;
}
@media screen and (max-width: 1024px) {
#main-container {
width: 100%;
box-sizing: border-box;
}
}
#overlay {
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: grey;
opacity: 75%;
position: absolute;
z-index: 1;
}
.hidden {
display: none;
}
button {
margin: 10px 0;
display: block;
}
.collapsible {
text-align: center;
}
body {
font-family: sans-serif;
box-sizing: border-box;
font-size: 2em;
}
#main-container {
border: 1px solid black;
display: inline-block;
position: relative;
min-width: 500px;
}
.section {
text-align: center;
margin: 10px 0;
display: flex;
justify-content: center;
padding-right: 1em;
}
.section::before {
content: "";
background-image: url("https://upload.wikimedia.org/wikipedia/commons/2/24/TriangleArrow-Right.svg");
background-size: 1em 1em;
width: 1em;
height: 1em;
display: inline-block;
align-self: center;
justify-content: left;
margin-left: 0.1em;
}
.down::before {
transform: rotate(90deg);
}
h3 {
flex: auto;
}
@media screen and (max-width: 1024px) {
#main-container {
width: 100%;
box-sizing: border-box;
}
}
#overlay {
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: grey;
opacity: 75%;
position: absolute;
z-index: 1;
}
.hidden {
display:...
JavaScript
function show(evt) {
overlay.classList.toggle("hidden");
}
const overlay = document.querySelector("#overlay");
document.querySelector("button").addEventListener("click", show);
const div = document.querySelectorAll(".section");
div.forEach(d =>
d.addEventListener("click", evt => {
evt.currentTarget.classList.toggle("down");
evt.currentTarget.nextElementSibling.classList.toggle("hidden");
})
);