In this beginner level tutorial, we will create collapse similar to Bootstrap collapse.
We will learn to toggle multiple targets with HTML, CSS and Javascript.
Skills learned
- DOM querySelector()
- Toggle class with Javascript
- Basic Flexbox
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap Collapse</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="container">
<button id="btn-1">Toggle First Element</button>
<button id="btn-2">Toggle Second Element</button>
<button id="btn-both">Toggle Both Element</button>
<div class="toggle-content">
<div class="content">
<div class="content content-1">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.
Harum, repellat tempora totam sed doloremque dolorem veniam
Aut natus, et labore, id quidem, animi maxime consequatur rem
</p>
</div>
</div>
<div class="content">
<div class="content content-2">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.
Harum, repellat tempora totam sed doloremque dolorem veniam
Aut natus, et labore, id quidem, animi maxime consequatur rem
</p>
</div>
</div>
</div>
</div>
<script src="index.js"></script>
</body>
</html>CSS
body{
box-sizing: border-box;
}
.container{
width: 800px;
margin: 150px auto;
padding: 20px;
border-radius: 15px;
border: 3px solid #ccc;
}
button{
padding: 15px;
color: #fff;
font-size: 1.2rem;
border-radius: 5px;
background: #007bff;
border: none;
cursor: pointer;
}
.toggle-content{
display: flex;
justify-content: space-around;
}
.content{
padding: 15px;
font-size: 1.2rem;
}
.content-1{
border: 1px solid #ccc;
visibility: hidden;
}
.content-2{
border: 1px solid #ccc;
visibility: hidden;
}
.display-text{
visibility: visible;
}Javascript
const btn_1 = document.querySelector("#btn-1");
const btn_2 = document.querySelector("#btn-2");
const btn_both = document.querySelector("#btn-both");
const content_1 = document.querySelector(".content-1");
const content_2 = document.querySelector(".content-2");
btn_1.addEventListener('click', function(e){
content_1.classList.toggle('display-text');
})
btn_2.addEventListener('click', function(e){
content_2.classList.toggle('display-text');
})
btn_both.addEventListener('click', function(e){
content_1.classList.toggle('display-text');
content_2.classList.toggle('display-text');
})
