JSFiddle - React, Tailwind, and code Playground
by Torwan
HTML
<div class="container">
<h1>Expandable Boxes With CSS Transitions</h1>
<div class="expandable-boxes">
<div class="expandable-box">
<h2>Box 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
<div class="expandable-box">
<h2>Box 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
<div class="expandable-box">
<h2>Box 3</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
<div class="expandable-box">
<h2>Box 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
<div class="expandable-box">
<h2>Box 5</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
<div class="expandable-box">
<h2>Box 6</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse auctor mauris felis, eget dictum arcu euismod ac.</p>
</div>
</div>
</div>
CSS
@import "compass/css3";
.container {
width: 80%;
margin: 30px auto;
}
.expandable-boxes {
position: relative;
}
.expandable-box {
width: 30%;
/*height: 180px;*/
float: left;
margin: 0 3% 20px 0;
border: 1px solid #999;
border-radius: 12px;
padding: 10px;
box-sizing: border-box;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.expandable-box.open {
border-color: #dd0000;
width: 96%;
height: 180px;
margin: 0;
}
.expandable-box.out {
width: 0;
height: 0;
overflow: hidden;
border: none;
padding: 0;
margin: 0;
opacity: 0;
}
JavaScript
$(document).ready(function() {
$('.expandable-box').click(function(e) {
if($(this).hasClass('open')) {
$('.expandable-box.out').not($(this)).removeClass('out');
$(this).removeClass('open');
}
else {
$('.expandable-box').not($(this)).addClass('out');
$(this).addClass('open');
}
});
});