JSFiddle - React, Tailwind, and code Playground
HTML
<div class="task_hours_day">
<div class="task" data-size="144">
<div class="content_task">
<span class="id_task">3121</span>
<span class="time_task">1h</span>
</div>
</div>
<div class="task" data-size="144">
<div class="content_task">
<span class="id_task">3122</span>
<span class="time_task">1h</span>
</div>
</div>
<div class="task" data-size="144">
<div class="content_task">
<span class="id_task">3123</span>
<span class="time_task">1h</span>
</div>
</div>
<div class="task" data-size="144">
<div class="content_task">
<span class="id_task">3124</span>
<span class="time_task">1h</span>
</div>
</div>
</div>
CSS
.task_hours_day{
width: 100%;
display:block;
}
.task:first-child {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
.task:last-child {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
.task{
background:red;
font-size: 12px;
font-weight: normal;
display: inline-block;
height: 13vw;
overflow: hidden;
margin-left: 5px;
float: left;
}
JavaScript
//attribu la taille à chaque rectangle
$('.task').each(function() {
var size = $(this).data("size");
$( this ).css('width',size);
});
//Reinit la taille du bloc .active
function resetActiveWidth(){
//On récupère l'élement .active
var activeElement = $(".active");
//On récupère la taille
var size = activeElement.data('size');
//On définit sa nouvelle taille
//Taille actuelle -20% de size
activeElement.animate({
width: "-=" + size * 1.2
});
//On supprile sa classe active
activeElement.removeClass('active');
}
var stop = false;
//quand on click sur un rectangle
$('.task').click(function () {
if(!stop) {
stop = true;
//si la tache n'est pas active
if(!$(this).hasClass('active')){
resetActiveWidth();
var size = $(this).width();
//ajoute les 20% à la taille
size = size * 1.2;
$(this).addClass('active');
$(this).animate({
width: "+=" + size
});
}
stop = false;
}
});