Drag & Drop + Clone
by KapulaGabor
HTML
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<div class="col-1" style="height:140px;">
<div class="mozgat f-szurke f75x30">
<p>F 75x30</p>
</div>
<div class="mozgat f-szurke f75x45" style="top: 65px">
<p>F 75x45</p>
</div>
</div>
<p class="clr"> </p>
<div id="osszerakas">
<div id="snaptarget1" class="bal-oszlop tapad bal"></div>
<div id="snaptarget2" class="kozepso-oszlop tapad bal"></div>
<div id="snaptarget3" class="jobb-oszlop tapad jobb"></div>
</div>
CSS
* {
padding: 0;
margin: 0;
}
.clr {
clear: both;
}
body {
background-color: #4A5157;
font-family: sans-serif;
}
.col-1, .col-2, .col-3 {
position: relative;
float: left;
margin-right: 7px;
}
.mozgat {
cursor: move;
margin-bottom: 7px;
position: absolute;
z-index: 1;
border: 1px solid #333;
}
.f75x30 {
width: 150px;
height: 60px;
line-height: 60px;
border-radius: 2px;
}
.f75x45 {
width: 150px;
height: 90px;
line-height: 90px;
border-radius: 2px;
}
.f75x30 p, .f75x45 p {
font-family: sans-serif;
font-size: 18px;
color: Gainsboro;
text-align: center;
text-shadow: 0px 1px 1px rgba(0, 0, 0, .4);
}
.jobb {
float: right;
}
.bal {
float: left;
}
.f-szurke {
background-color: #999999;
}
#osszerakas {
margin: 0 auto;
width: 788px;
height: 500px;
}
.item {
cursor: move;
border: 1px solid #333;
border-collapse: collapse;
}
#snaptarget1, #snaptarget2, #snaptarget3 {
position: relative;
border: 1px solid #4A5157;
border-collapse: collapse;
}
#snaptarget1 {
width: 210px;
height: 369px;
}
#snaptarget2 {
width: 362px;
height: 276px;
}
#snaptarget3 {
width: 210px;
height: 369px;
}
.snaptarget-hover {
background-color: #616A72;
}
JavaScript
$(".mozgat").draggable({
helper: "clone",
appendTo: "body",
revert: "invalid",
snap: ".tapad",
stack: ".mozgat",
scroll: false
});
$("#snaptarget1,#snaptarget2,#snaptarget3").droppable({
accept: ".mozgat",
activeClass: "snaptarget-hover",
drop: function (event, ui) {
var ct = $(this);
var item = $(ui.draggable);
var origPos;
var ctPos = ct.offset();
if (item.is('.tapad')) {
origPos = item.offset();
ct.append(item);
} else {
origPos = ui.offset;
item = item.clone();
ct.append(item);
item.removeClass("ui-draggable");
item.addClass('tapad');
item.draggable({
containment: "#osszerakas",
snap: ".tapad",
stack: ".mozgat",
scroll: false
});
}
item.css({
top: origPos.top - ctPos.top - 1,
left: origPos.left - ctPos.left - 1
});
}
});