1

我想忽略边界半径为 50%(一个圆圈)的 div 上的 click/touchstart 事件,当它没有点击可见圆圈时(所以当你点击 div 的角时)。

我确实写了一个非常简单的函数(它不是 100% 精确,它是一种解决方法,现在没问题)来检查你是否点击了 div 的一角:

http://codepen.io/anon/pen/zhwri

到目前为止,一切都很好,

问题:

圆(.circle)将随变换旋转(例如 -webkit-transform: rotate(45deg); 现在该功能将无法正常工作(可能是由于盒子模型等)有没有办法确定我是否当 div 被旋转渲染时点击了一个角落?因为坐标指的是盒子模型(我猜),这不是客户看到的。

希望我的问题很清楚,也许还有其他方法可以解决我在函数中建议的方法?

谢谢您的帮助!

更新:我忘了告诉在这种情况下 SVG 或 Canvas 不是一个选项(可怜 :( ),所以对于建议这个的每个人:你是对的,但不幸的是不是一个选项 :(

4

2 回答 2

0

我建议您使用画布元素,例如使用d3.jshttp://d3js.org/,选择复杂的形状(如圆形)会更简单(并注意事件)。

于 2013-07-15T14:43:25.423 回答
0

问题在于这些陈述

eToParent['x'] = e.originalEvent.touches[0].clientX - $(e.target).offset().left;
eToParent['y'] = e.originalEvent.touches[0].clientY - $(e.target).offset().top;

.offset()不考虑您的 CSS 转换(即rotate(45deg))。因此,对于您的示例,您必须手动将旋转应用于元素报告的偏移量。

于 2013-07-15T14:47:48.510 回答