このフィドルを見てください
CSS は無視します。重要ではありません。
このjQuery
コードの目的は、マウスが 内に入った方向と反対の方向を伝えること.container
です。見栄えの悪い関数であることは承知していますが、しばらく無視してください。方向は、n
(北の場合)、ne
(北東の場合) などです...
を開き、マニアックにconsole
マウスを動かすと、最終的に が表示されます。(は非表示で、円形のボタンを囲んでいます)div.container
undefined
console
div.container
値はinのundefined
場合にのみ可能です。これは、を入力すると(球形のボタン)内にあることを意味しますが、これは不可能です。x === 0 && y === 0
getMovementDirection()
mouse
div.container
div.button
それで、私の質問は、そのコードで何が起こっているのですか?
-手伝ってくれてありがとう
PS:
タイトルは改善が必要です。
jQuery code
(function($) {
var $container = $('div.container'),
$button = $('div.button');
$container.on('mouseenter', function(e) {
var mouseLocation = {
x: e.pageX,
y: e.pageY
}
var buttonLocation = {
x: $button.offset().left,
y: $button.offset().top
}
var loc = getMovementDirection (mouseLocation, buttonLocation, jQuery);
console.log(loc);
});
})(jQuery);
function getMovementDirection (mouse, container, $) {
var width = $('div.button').outerWidth(),
height = $('div.button').outerHeight();
var x, y;
if (mouse.x < container.x) { x = -1; }
else if (mouse.x < container.x + width) { x = 0; }
else { x = 1; }
if (mouse.y < container.y) { y = -1; }
else if (mouse.y < container.y + width) { y = 0; }
else { y = 1; }
if ( x === -1 && y === -1 ) { return 'se'; }
else if ( x === 0 && y === -1 ) { return 's'; }
else if ( x === 1 && y === -1 ) { return 'sw'; }
else if ( x === -1 && y === 0 ) { return 'e'; }
// x === 0 && y === 0 is forbidden
else if ( x === 1 && y === 0 ) { return 'w'; }
else if ( x === -1 && y === 1 ) { return 'ne'; }
else if ( x === 0 && y === 1 ) { return 'n'; }
else if ( x === 1 && y === 1 ) { return 'nw'; }
}