JSFiddle - React, Tailwind, and code Playground
by mecano
HTML
<div id="menu">
<div id="modules">
<div id="mod01"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="120" height="80"></div>
<div id="mod02"><img src="http://zupimages.net/up/17/32/hffw.jpg" width="120" height="80"></div>
<div id="mod03"><img src="http://zupimages.net/up/17/32/g790.jpg" width="120" height="80"></div>
<div id="dropdown" style="display:none;">
<div class="div_mod" data-type="mod01" data-id="1">
<img src="http://zupimages.net/up/17/32/bgot.jpg" width="240" height="70">
</div>
<div class="div_mod" data-type="mod02" data-id="2">
<div class="margin-elt float-elt"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="50" height="50"></div>
<div class="size-paragraphe">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitem.</div>
</div>
<div class="div_mod" data-type="mod03" data-id="3">
<p class="size-paragraphe margin-elt">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitems portunum est, ut arbitror.</p>
</div>
</div>
</div>
</div>
<div id="container">
<div id="bloc_1" style="display:none;">
<div class="div_mod01 row drag-drop" data-id="1" data-position="1" data-type="images">
<img src="http://zupimages.net/up/17/32/bgot.jpg" width="240" height="70">
</div>
<div class="div_mod02 row drag-drop" data-id="2" data-position="2" data-type="texte-image">
<div class="margin-elt float-elt"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="50" height="50"></div>
<div class="size-paragraphe">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitem.</div>
</div>
<div class="div_mod03 row drag-drop" data-id="3" data-position="3" data-type="textes">
<p class="size-paragraphe margin-elt">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitems portunum est, ut arbitror.</p>
</div>
</div>
<div id="bloc_2">
...
CSS
#menu {
width: 300px;
}
#mod01,
#mod02,
#mod03 {
width: 120px;
margin: 0 auto;
}
#container {
width: 300px;
margin-left: 20px;
}
#bloc_1,
#bloc_2,
#dropdown {
padding: 20px;
}
.div_mod01,
.div_mod02,
.div_mod03,
#div_1,
#div_2,
#div_3,
.div_mod {
border: 1px dashed #000;
margin: 10px auto;
}
.div_mod03 p {
text-align: center;
}
.size-paragraphe {
font-size: 12px;
}
.margin-elt {
margin-right: 10px;
}
#container,
#menu,
.float-elt {
float: left;
}
#container,
#menu {
border: 1px dotted #000;
margin-bottom: 20px;
}
.add {
text-align: center;
cursor: pointer;
background: #000;
color: #fff;
padding: 5px;
}
.add:hover {
background: green;
color: #fff;
}
#btn_update {
clear: both;
margin: 0 0 0 320px;
}
#update,
#save {
background: red;
color: #fff;
padding: 10px;
text-align: center;
cursor: pointer;
}
JavaScript
(function() {
$("#modules").hover(
function() {
$("#dropdown").fadeIn(200);
},
function() {
$("#dropdown").fadeOut(200);
}
);
$("#mod01").hover(function() {
$(".div_mod[data-type='mod01']").show();
$(".div_mod[data-type='mod02']").hide();
$(".div_mod[data-type='mod03']").hide();
});
$("#mod02").hover(function() {
$(".div_mod[data-type='mod01']").hide();
$(".div_mod[data-type='mod02']").show();
$(".div_mod[data-type='mod03']").hide();
});
$("#mod03").hover(function() {
$(".div_mod[data-type='mod01']").hide();
$(".div_mod[data-type='mod02']").hide();
$(".div_mod[data-type='mod03']").show();
});
$(".div_mod").hover(
function() {
$(this).append('<div class="add"><i class="fa fa-plus"></i>Insert</div>');
$('.add').click(function() {
$("#bloc_2")
.prepend(
$("#bloc_1 .row[data-id='" + $(this).parent().attr("data-id") + "']")
.clone()
.attr('data-position','1'))
.find("div.drag-drop").each(function(){
// On calcule sa position
index = parseInt($(this).index()+1);
// On met le data à jour
$(this).attr("data-position",index);
});
});
},
function() {
...