我正在構建我自己的線圖,並想知道我將如何去做關於懸停的互動線<path>
。SVG標記onHover事件(圖)
例如(簡體):
<path d="M5,10L10,20L30,40"></path>
當用戶將鼠標懸停在5,10
或10,20
我將如何執行懸停事件,並顯示在一般<circle>
或只是一個命令?有什麼我失蹤或我必須檢測鼠標的位置?
我正在構建我自己的線圖,並想知道我將如何去做關於懸停的互動線<path>
。SVG標記onHover事件(圖)
例如(簡體):
<path d="M5,10L10,20L30,40"></path>
當用戶將鼠標懸停在5,10
或10,20
我將如何執行懸停事件,並顯示在一般<circle>
或只是一個命令?有什麼我失蹤或我必須檢測鼠標的位置?
SVG有一個稱爲標記的概念,允許將任意形狀添加到路徑節點,但標記不能接收事件,per the last line in the SVG marker specification text。
不處理附加到'marker'元素內容的事件屬性和事件偵聽器;只處理「標記」元素的渲染方面。
如果你認爲這應該改變,take it up with the w3c SVG group。
如果您想要對事件做出響應,您必須手動創建自己的形狀,並確保它們碰巧位於正確的位置。
這可能會在SVG2中得到支持,請參閱https://svgwg.org/svg2-draft/painting.html#Markers,特別是第11期「在定位標記上進行交互工作」。 –
因此,如果路徑懸停,請獲取鼠標的x,y並選擇離這些座標最近的點? –
當然,[getPointAtLength](http://www.w3.org/TR/SVG/paths.html#__svg__SVGPathElement__getPointAtLength)可能會有所幫助。 –
編輯了代碼,我沒有複製我的實際代碼,所以我沒有注意到這個錯誤。我現在將搜索標記。 –
http://www.w3.org/TR/SVG/painting.html#Markers,因爲我無法編輯舊評論。 – Joey
是的,這將是點,但我想我真的在尋找如何將一個事件附加到這些標記? http://stackoverflow.com/questions/6796332/chrome-svg-marker-element-onmouseover。我不明白這是不可能的,我希望圖表具有這種功能。 –