沿东西线...
var innerDiv = $('#inner');
var outerDiv = $('#outer');
innerDivWidth = innerDiv.outerWidth();
innerDivHeight = innerDiv.outerHeight();
var offset = outerDiv.offset();
var l = offset.left + 15;
var t = offset.top + 15;
var h = outerDiv.outerHeight();
var w = outerDiv.outerWidth();
var maxx = l + w - innerDivWidth;
var maxy = t + h - innerDivHeight;
$(document).on('mousemove', function(e) {
if(e.clientY <= maxy && e.clientY >= t) {
$('#inner').css({
top: (e.clientY - 15) + 'px'
});
}
if(e.clientX <= maxx && e.clientX >= l) {
$('#inner').css({
left: (e.clientX - 15) + 'px'
});
}
});
JSFiddle
有一点要记住的是,你应该保持执行的代码在事件发生时,非常瘦。特别是因为像mousemove
这样的事件每秒可能会触发数百次。
摘自Jquery Doc。
请记住,只要鼠标指针移动(即使是像素),触发鼠标移动事件。这意味着可以在很短的时间内生成数百个事件 。如果处理程序有 执行任何重要处理,或者存在多个用于处理事件的处理程序,则这可能会严重影响浏览器的性能。 因此,重要的是优化mousemove处理程序,尽可能多地使用 ,并在不再需要时立即解除它们。
您可能喜欢这个图书馆:http://tether.io/ – bruchowski
u inner not child outer,becouse使用另一个理由positiion:绝对流。你想要什么信息到内心? –
@AndreyFedorov那是什么? – MarksCode