javascript - 准确检测圆 Angular div的鼠标悬停事件

标签 javascript jquery mouseover css

我正在尝试检测圆圈上的鼠标悬停事件。我这样定义圆 div:

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

然后我像这样使用 jQuery 检测鼠标悬停:

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

除了整个 80px x 80px 区域都会触发鼠标悬停事件外,这工作得很好。换句话说,即使鼠标不在可见圆上,只要触摸 div 的右下角就会触发 mouseover 事件。

是否有一种简单且 jquery 友好的方法来仅在圆形区域触发鼠标悬停事件?

更新:为了回答这个问题,我们假设浏览器支持 CSS3 并正确呈现 border-radius。有没有人有疯狂的数学/几何技能来想出一个简单的等式来检测鼠标是否进入了圆圈?为了使它更简单,我们假设它是一个圆而不是任意的边界半径。

最佳答案

如果鼠标位置太远,则忽略鼠标悬停事件。这真的很简单。取div的中心点,计算到鼠标指针的距离(距离公式=sqrt((x2 - x1)^2 + (y2 - y1)^2))如果比较大比圆的半径(div 宽度的一半)还不在圆中。

关于javascript - 准确检测圆 Angular div的鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006419/

相关文章:

javascript - jQuery/CSS 选择复选框标签

wpf - 是否可以伪造WPF鼠标悬停?

javascript - 将变量与字符串数组匹配?

Jquery选择器——如何选择当前元素的第一个指定父元素

javascript - 未捕获的类型错误 : number is not a function when parsing JSONP response in jQuery ajax call

javascript - 尝试在 for 循环中执行 promise 链(对列表中的每个项目执行一次)——我该如何正确执行此操作?

javascript - 我们如何使用 Chart.js 在 Polymer 1.0 上构建图表?

php - 如何使用 jQuery 对目录中的文件进行计数?

jquery - 文档就绪时的 CSS3 触发鼠标悬停状态

javascript - 正则表达式替换 HTML 文档中的空格