获取矩形元素的屏幕像素坐标
Getting the Screen Pixel coordinates of a Rect element
我试图通过java脚本在SVG中获得矩形的屏幕像素坐标。当矩形被点击时,我可以通过getBBox()计算出它的宽度、高度、x和y位置。
但这些位置是原始位置。我想要屏幕位置
例如,如果我操纵整个SVG的viewBox,这些getBBox坐标将不再与屏幕像素相同。有没有函数或方法可以得到坐标考虑当前的viewBox和像素大小的svg元素?
Demo: http://phrogz.net/SVG/screen_location_for_element.xhtml
var svg = document.querySelector('svg');
var pt = svg.createSVGPoint();
function screenCoordsForRect(rect){
var corners = {};
var matrix = rect.getScreenCTM();
pt.x = rect.x.animVal.value;
pt.y = rect.y.animVal.value;
corners.nw = pt.matrixTransform(matrix);
pt.x += rect.width.animVal.value;
corners.ne = pt.matrixTransform(matrix);
pt.y += rect.height.animVal.value;
corners.se = pt.matrixTransform(matrix);
pt.x -= rect.width.animVal.value;
corners.sw = pt.matrixTransform(matrix);
return corners;
}
品红方块是HTML元素中绝对位置的div,使用屏幕空间坐标。当您拖动或调整矩形的大小时,将调用此函数并将角div移动到四个角上(第116-126行)。请注意,即使矩形处于任意嵌套转换(例如蓝色矩形)并且SVG被缩放(调整浏览器窗口的大小),这也可以工作。
为了好玩,可以将其中一个矩形从SVG画布的边缘拖出,并注意屏幕空间的角停留在看不见的点上方。
您还可以检查是否存在elm.getScreenBBox()
方法,它的作用就像它听起来的那样。它在SVG Tiny 1.2中定义。
请参阅这里的文件,其中包括getScreenBBox
的后备实现,应该在所有浏览器中工作。
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 获取以屏幕像素为单位的旋转SVG元素的边界
- jQuery - 根据屏幕宽度将像素添加到高度
- 当屏幕 CSS 像素比大于 1 时,在不同的浏览器上获取相同的 window.screen.height 和 windo
- 仅当屏幕上显示 <1000 像素时调用 JS 函数
- 如何在小于 600 像素的屏幕上的页面加载中“打开”引导下拉菜单
- HTML5画布-在屏幕上显示像素颜色阵列的最快方式
- 如何获取文本光标在屏幕上的像素位置
- Javascript mobile-根据屏幕尺寸以像素为单位计算元素尺寸
- 如何从画布中获取像素数据,其中包含由chrome扩展生成的屏幕截图
- 将图像设置为屏幕的百分比,而不是像素
- 如果屏幕宽度小于960像素,做点什么
- 使用javascript查找屏幕尺寸,以英寸为单位,而不是像素
- 如何在React Native中从屏幕上的像素中获取颜色
- 对Canvas屏幕上的所有像素求和
- 获取矩形元素的屏幕像素坐标