2013-07-15 68 views
1

我想忽略邊界半徑爲50%(圓)的div上的click/touchstart事件,當它未在可見圓上單擊時(因此當您單擊div的一個角落時) 。用borderradius忽略元素上的事件

我也寫了一個非常簡單的功能(這是不是100%準確的,這是一個解決辦法,現在它的罰款)檢查,如果你的DIV的角落點擊:

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

至今那麼好,

問題:

圓(.circle)將與變換(例如-webkit-變換旋轉:旋轉(45deg);現在的功能將無法正常(可能是因爲箱子的工作模型等)有沒有辦法f確定當div旋轉渲染時是否點擊了一個角落?因爲座標是指箱子模型(我猜),那不是客戶看到的。

希望我的問題很明確,也許還有其他方法可以解決我在功能上提出的方式嗎?

感謝您的幫助!

更新:我忘了告訴大家,在這種情況下,SVG和Canvas是不是一個選項(貝蒂:(),所以大家誰建議這樣的:你是對的,但不幸的是不是一種選擇:(

回答

0

我建議您使用畫布元素,例如與d3.jshttp://d3js.org/,這將是更簡單選擇複雜的形狀,如圓形(並注意事件)。

+0

是的,我知道,問題是,在這種情況下,我不能使用畫布或SVG,所以它需要是純HTML/CSS(3)/ js – user2583934

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))。因此,對於您的示例,您必須手動應用旋轉到元素的報告偏移量。

+0

什麼意思恰恰與「手動應用旋轉到您的元素報道抵消。「? – user2583934

+0

例如'$(e.target).offset()。left'將不會反映旋轉元素的真實可見偏移量,因此您必須先取得該值,然後獲取45度像素(順時針) 從中。 –

+0

這聽起來很公平,但你如何得到它的像素45度(順時針),因爲這可能是答案? – user2583934