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