Точно обнаружьте событие mouseOver для отделения со скругленными углами

Я пытаюсь обнаружить событие mouseOver на круге. Я определяю круговое отделение как это:

.circle {
  width: 80px;
  height: 80px;
  -moz-border-radius: 40px;
  -webkit-border-radius: 40px;
  background-color: #33f;
}

Затем я обнаруживаю mousover использование jQuery как это:

$('.circle').mouseover(function() {
  $(this).css({backgroundColor:'#f33'});
});

Это работает хорошо, за исключением того, что вся область 80 пкс на 80 пкс инициировала событие mouseOver. Другими словами, просто касание правого нижнего угла отделения инициировало событие mouseOver, даже при том, что мышь не по видимому кругу.

Существует ли простое и jQuery дружественный способ инициировать событие mouseOver в круговой области только?

Обновление: Ради этого вопроса давайте предположим, что браузер CSS3 способный и представляет радиус границы правильно. У кого-либо есть безумные навыки математики/геометрии для предложения простого уравнения, чтобы обнаружить, ввела ли мышь круг? Для создания этого еще более простым давайте предположим, что это - круг и не произвольный радиус границы.

7
задан Devon 5 January 2010 в 14:10
поделиться

4 ответа

Просто игнорируйте событие наведения мыши, если она находится слишком далеко. Это очень просто. Возьмите центральную точку div и вычислите расстояние до указателя мыши (формула расстояния = sqrt((x2 - x1)^2 + (y2 - y1)^2)), и если оно больше радиуса окружности (половина ширины div), то оно ещё не в окружности.

.
17
ответ дан 6 December 2019 в 07:50
поделиться

Наверное, можно сделать что-то подобное со старомодной картой изображений - там есть круговая зона.
На самом деле, этот плагин может вам помочь: jQuery MapHilight Plugin

2
ответ дан 6 December 2019 в 07:50
поделиться
[

] Нет, не существует. Думай геометрически. Ты все еще используешь ныряльщика, который является элементом коробки. У этого элемента есть специальная прямоугольная граница, которая запускает курсор мыши над событием. Использование CSS для поставки закругленной границы только косметически, и не меняет прямоугольную границу этого элемента. [

]
4
ответ дан 6 December 2019 в 07:50
поделиться
[

] Если вы хотите, чтобы это работало так, как вы собираетесь это сделать, это потребует значительного объема вычислений. Всякий раз, когда мышь заходит в объект, сначала нужно выяснить, есть ли у него закругленные углы (учитывая различные браузеры), а затем вычислить, действительно ли курсор находится внутри этих углов, и если да, то есть ли, применить класс наведения.[

] [

] Не похоже, что это стоит всех проблем. [

]
0
ответ дан 6 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: