Я заставил его работать, используя приведенную выше ссылку Преподобного Пита, в которой используется JQuery UI Draggable Collision
jsfiddle.net / RichardGouw / h14jcqvx / 28 /
Немного изменил свое мнение о наличии ореола вокруг активной булавки, но эффект столкновения все тот же
HTML
<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<script src="http://code.jquery.com/ui/1.8.18/jquery-ui.js"></script>
<!-- Include links to UI Draggable Collision files -->
<div class="pin"></div>
<div class="pin"></div>
<div class="pin"></div>
<div class="pin"></div>
CSS
.pin {
width: 20px;
height: 20px;
background-color: #65C02F;
margin: 7px;
border-radius: 20px;
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
-moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
-webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
transition: box-shadow 0.2s;
}
.pin.placed.boundary {
box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.4);
-webkit-box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.4);
}
JQuery
// make pins draggable (using jQuery UI)
$(".pin").draggable({
// apply collision effect (using UI Draggable Collision)
obstacle: ".placed",
preventCollision: true,
// optional, snap to pixel grid (using jQuery UI)
grid: [5,5],
// animate on start of drag (using jQuery UI)
start: function(e, ui) {
$(this).removeClass('placed'),
$('.placed').addClass('boundary');
},
// animate on end of drag (using jQuery UI)
stop: function(e, ui) {
$(this).addClass('placed'),
$('.placed').removeClass('boundary');
}
});