我在一个彩色盒子里面有一个10px的小圆圈。拖动圆圈会选择一种颜色。但是我不希望用户在将它们拖动之前必须将光标准确地放在10px圆圈内。如果他们到达圆圈附近的任何地方,比如在圆圈周围的30px方格内,我希望光标捕捉到圆圈的中心。
我知道您可以使用jQuery UI捕捉可拖动对象,但是可以捕捉游标。 看起来不一样
感谢任何想法。
答案 0 :(得分:1)
令人讨厌的伎俩:http://jsfiddle.net/coma/KNnXd/
请勿在家中使用
<强> HTML 强>
<div id="area">
<div>
<div></div>
</div>
</div>
<div id="cursor"></div>
<强> CSS 强>
html {
cursor: none;
}
#cursor {
background: transparent url(http://telcontar.net/Misc/screeniecursors/Cursor%20arrow%20Aero.png) no-repeat 0 0;
width: 17px;
height: 23px;
position: absolute;
pointer-events: none;
}
#area {
height: 300px;
background-color: #eee;
}
#area > div {
position: absolute;
background-color: rgba(0, 0, 0, 0.2);
padding: 20px;
}
#area > div > div {
background-color: #333;
width: 1em;
height: 1em;
border-radius: .5em;
font-size: 10px;
}
<强> JS 强>
$(function() {
var area = $('#area');
var circle = area.children('div');
var cursor = $('#cursor');
var html = $('html');
circle.draggable();
var xo = 0;
var yo = 0;
var refresh = function(event) {
cursor.css({
left: event.clientX - xo,
top: event.clientY - yo
});
};
html.mousemove(function(event) {
refresh(event);
});
circle.mousedown(function(event) {
xo = event.clientX - (circle.offset().left + circle.outerWidth() / 2);
yo = event.clientY - (circle.offset().top + circle.outerHeight() / 2);
refresh(event);
});
circle.mouseup(function(event) {
xo = 0;
yo = 0;
refresh(event);
});
});
答案 1 :(得分:0)
无法将光标捕捉到目标,但您可以将目标的中心捕捉到光标。
HTML:
<div id="holder">
<div id="block"></div>
</div>
的CSS:
#holder{
height: 40px;
width: 40px;
padding: 30px;
cursor: pointer;
}
#block{
height: 40px;
width: 40px;
background-color: black;
cursor: move;
}
jquery的:
var drag = $('#holder');
drag.draggable({
start: function() {
$(document).mousemove(function (e) {
drag.offset({ top: e.pageY-50, left: e.pageX-50 });
}).click(function () {
$(this).unbind("mousemove");
});
}
});
以下是一个工作示例:http://jsfiddle.net/Angvs/
希望有所帮助......
答案 2 :(得分:0)
通过这些回复来看,它看起来不像我想做的那样,最好不要这样做,或者网站所有者可以为他们的访问者做出选择。
但是,类似的效果可能只是让你的小圈子在翻转时变得可见。然后你不必小心地将鼠标移到它上面。你可以向它充电,直到你得到可见的反馈,并停止。无论如何,谢谢你的回应。