JSFiddle - React, Tailwind, and code Playground

by Marco

HTML

<div id="container">
<div id="row1" class="row"><div class="element a11"></div><div class="element a22"></div><div class="element a33"></div><div class="element a44"></div></div>
<div id="row1" class="row"><div class="element a1"></div><div class="element a2"></div><div class="element a3"></div></div>
<div id="row1" class="row"><div class="element a1"></div><div class="element a2"></div><div class="element a3"></div></div>
</div>

CSS

*{
	margin: 0px;
	padding: 0px;
	-moz-box-sizing:border-box;
	-webkit-box-sizing:border-box;
	-ms-box-sizing:border-box;
	box-sizing:border-box;
}

#container{
	height: auto;
	width: 100%;
}
.row{
	height: 300px;
	width: 100%;
	margin-bottom: 4px;
}
.element{
	width:33.33%;
	height: 100%;
	float:left;
}

.a1,.a11{
	background-color: #F90;
}
.a2,.a22{
	background-color: #CC6;
}
.a3,.a33{
	background-color: #399;
}
.a11,.a22,.a33,.a44{
	width:25%;
	
}
.a44{
	background-color: #966;
}

JavaScript

$('div.element').click(function(){
			var number=$(this).parent('div.row').find('div.element').length
			$(this).toggleClass('go');
			if($(this).hasClass('go')){
				$(this).stop().animate({'width':'100%'},{
				duration:1000,
				step:function(gox){
				  var width = gox < 100 ? (100 - gox) / (number-1) : 0;
                  $(this).siblings().css({
					  'width': width + "%"
					  }); 
				  }
				 })
				
			}else{
			$(this).parent('div.row').find('div.element').stop().animate({'width':100/number+'%'},1000);
		};
	});