如何使 svg 和鼠标光标位置正确
How to get svg and mouse cursor position correct
我正在尝试制作一个垂直可拖动的温度计类型的组件。你用箭头按住圆圈的东西,上下拖动,它随着光标移动。使用普通的 HTML/JS 这很容易,但我似乎无法弄清楚如何让 svg 部分随着鼠标移动。现在它朝着正确的方向移动,但它远离光标。
我已经在 Stackoverflow 上阅读了大约十几个答案,它们似乎都使用了我链接中的相同代码,但它仍然关闭。我完全不确定我做错了什么。
演示:http://jsbin.com/qoyozej/3/edit?html,js,output
p.s. <style>
标签中的width
和height
在 Safari 和 Chrome 中运行良好,但在 Firefox 中则不然。我还不确定如何解决这个问题,所以颜色条现在不会出现在 Firefox 中。
您正在使用 evt.clientX
和 evt.clientY
,它为您提供页面上鼠标事件的坐标。
进行变换之前,您需要从坐标中减去 SVG 的(左上角)位置。
除了计算元素在页面上的相对位置(如保罗的回答所示),您还需要考虑 Viewbox 如何影响您的图形;
- 为了计算相对于页面的正确位置,您可以在 svg elem 上使用 getBoundingRect() 方法,
- 为了计算正确的缩放比例,您可以进行一些数学运算,将高度除以 Viewbox 高度并将其乘以 Cursor.y(或者您可以在转换中使用缩放)。
相关文章:
- 自定义函数中的光标位置
- jQuery/Javascript>on单击将文本放置在最后一个已知的光标位置
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何在按键事件发生后获取文本光标的位置
- 内容可编辑分区-根据内部HTML位置的光标位置
- 保持光标位置元素在顶部使用 svg
- 保存键控触发器时保持光标位置的最佳做法
- 如何在java脚本中获取光标位置
- 获取光标位置或光标在 TinyMCE 中的行数
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 在Chrome中,光标位置异常地位于输入值的末尾
- 在光标位置的文本区域中插入一个字符串,并进行一些更改
- 如何从谷歌地图事件访问光标位置(即页面的x和y轴)
- 如何在光标所在的位置绘制线条?HTML5画布使用MrDoob's和谐
- 如何在网页加载asp.net上显示文本框中第二个字母的光标位置
- 当前光标位置(百分比)
- GWT:如何从当前光标位置或所选文本中获取css样式的属性
- 在光标位置插入HTML,并使用javascript将光标移动到插入的HTML的末尾
- jQuery:使用插件Tipsy将工具提示附加到鼠标光标位置
- 不带HTML的光标位置需要转换为带HTML的位置