Skip to content

Instantly share code, notes, and snippets.

@mhkeller
Last active December 22, 2015 04:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mhkeller/6416093 to your computer and use it in GitHub Desktop.
Save mhkeller/6416093 to your computer and use it in GitHub Desktop.
Hover window follow mouse, while respecting bounds of a given container
function followMouse(e, $hover_window, $hover_bounder){
var xOffset = e.pageX
, yOffset = e.pageY
, xBuffer = 10
, yBuffer = 50
, hover_window_height = $hover_window.outerHeight()
, hover_window_width = $hover_window.outerWidth()
, map_canvas_height = $hover_bounder.outerHeight()
, map_canvas_width = $hover_bounder.outerWidth()
, map_canvas_offset_left = $hover_bounder.offset().left
, map_canvas_offset_top = $hover_bounder.offset().top;
$hover_window.css({
'top': yOffset + yBuffer,
'left': xOffset - hover_window_width/2
});
// If it goes against the left wall
if (xOffset < map_canvas_offset_left + hover_window_width/2 + xBuffer){
$hover_window.css({
'left': xBuffer
});
};
// If it goes against the right wall
if(xOffset > map_canvas_width - hover_window_width/2 - xBuffer){
$hover_window.css({
'left': map_canvas_width - hover_window_width - xBuffer
});
};
// If it goes against the bottom
if(yOffset > map_canvas_height - hover_window_height - yBuffer){
$hover_window.css({
'top': yOffset - yBuffer/2 - hover_window_height
});
};
};
$('#hover_bounder').mousemove( function(e){
followMouse(e, $hover_window, $(this));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment