javascript - 如何最好地将 ClientRect/DomRect 转换为普通对象

标签 javascript dom getboundingclientrect

someElement.getBoundingClientRect() 的结果返回一个类型为 ClientRect(或显然是 DomRect)的特殊对象)

它的结构类似于{top: 10, right: 20, bottom: 30, left: 10, width: 10}

不幸的是,这个对象的行为与其他对象不太一样。

例如,在其上使用 Object.keys 返回一个空数组(我认为是因为 ClientRect 属性不是可枚举的

我发现了一些转换为普通对象的肮脏方法:

var obj = {}
for (key in rect) {
  obj[key] = rect[key]
}

我的问题是,有更好的方法吗?

最佳答案

我们不要把事情想得太复杂!

function getBoundingClientRect(element) {
  var rect = element.getBoundingClientRect();
  return {
    top: rect.top,
    right: rect.right,
    bottom: rect.bottom,
    left: rect.left,
    width: rect.width,
    height: rect.height,
    x: rect.x,
    y: rect.y
  };
}

ES2015:

const getBoundingClientRect = element => { 
  const {top, right, bottom, left, width, height, x, y} = element.getBoundingClientRect()
  return {top, right, bottom, left, width, height, x, y} 
}

console.log(
  getBoundingClientRect( document.body )
)

关于javascript - 如何最好地将 ClientRect/DomRect 转换为普通对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39417566/

相关文章:

javascript - 在算术运算中实现运算符优先级

javascript - Element.getBoundingClientRect 何时保证更新/准确?

javascript - WordPress 编辑器在文本模式下工作正常但在可视模式下不工作。为什么会这样?

javascript - 从 jquery 调用 Mirth 'client api' 服务

java - 获取 DOM 树中所有根到叶路径的列表

javascript - 获取 svg 元素的坐标返回 SVGAnimatedLength

jquery - 如何选择具有特定 id 的父级的图像元素?

javascript - 根据 SVG 元素顶部位置定位工具提示

javascript - 当我的元素到达屏幕底部时,如何停止 setInterval 函数?

javascript - 带有滚动事件的 Raphael 动画