使用getBoundingClientRect()计算边界框
Calculating bounding box using getBoundingClientRect() Issue with swift top, left
我有一个绝对位置的div target
,我需要创建另一个div bb
,它完全匹配/重叠 target
的边界框。
下面的脚本工作,但在相同的旋转,如80度,div bb
的位置不保持
我想知道:
- 我的代码做错了什么?如何解决这个问题?
- 或者可能是一个问题getBoundingClientRect()?
注意:div bb
匹配div target
的初始位置,我需要只使用CSS translate
快速bb
http://jsbin.com/josufehano/1/(铬)
Issue可能在以下函数中,但任何其他反馈都是非常感谢的。谢谢。
calculate: function () {
var elm = document.getElementById(this.config.target.id);
var rect = elm.getBoundingClientRect();
this.data.br.width = rect.width;
this.data.br.height = rect.height;
// calculate swift
this.data.br.left = -Math.abs(this.data.br.width - this.data.width) / 2;
this.data.br.top = -Math.abs(this.data.br.height - this.data.height) / 2;
},
我已经用下面的脚本解决了我的问题。基本上我需要它考虑旋转时,计算上/左swift。
http://jsbin.com/hejemixolu/1/ calculate: function () {
var elm = document.getElementById(this.config.target.id);
var rect = elm.getBoundingClientRect();
this.data.br.width = rect.width;
this.data.br.height = rect.height;
this.data.br.left = rect.left;
this.data.br.top = rect.top;
if (this.data.br.left <= this.data.left) {
this.data.br.left = -Math.abs(this.data.left - this.data.br.left);
} else {
this.data.br.left = Math.abs(this.data.br.left - this.data.left);
}
if (this.data.br.top <= this.data.top) {
this.data.br.top = -Math.abs(this.data.top - this.data.br.top);
} else {
this.data.br.top = Math.abs(this.data.br.top - this.data.top);
}
},
相关文章:
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- jQuery根据鼠标位置计算DIV偏移量和边界
- 更改计算为适合边界框的区域
- 如何在给定距离内计算边界框
- 如何计算应用 CSS 转换矩阵的 DOM 元素的边界矩形大小?不使用 Element.getBoundingClient
- 使用 MomentJS 计算日期在月边界上的差值
- Threejs:计算旋转文本的边界框
- Mapbox-gl:从中心点,缩放级别和尺寸计算地图边界
- d3.js散点图-缩放/拖动边界、缩放按钮、重置缩放、计算中值
- 谷歌地图v3neneneba API-计算边界给定的中心坐标和距离
- 计算摄影机的近平面边界和远平面边界
- 谷歌地图V3 - 如何计算给定边界的缩放级别
- 在 ThreeJS 中计算网格的体积大于边界框体积
- 使用getBoundingClientRect()计算边界框