获取经过CSS3转换的元素的大小
Getting the size of a CSS3 transformed element
我想检索已应用CSS3转换的div的大小。
-webkit-transform: scale3d(0.3, 0.3, 1);
所以,实际上我已经把元素做成了原来大小的30%。但是,当我查询元素的宽度/高度时,它会报告应用转换之前元素的大小。
我知道这实际上是正确的行为,元素实际上不会改变大小,但它的内容会改变。但是,我在这里问的原因是,如果我在元素上单击鼠标右键,并从弹出菜单中选择"检查元素"(我刚才在Mac上使用Safari),则元素将高亮显示,渲染大小将显示在元素附带的浏览器工具提示中。
因此,这表明浏览器"知道"渲染的大小,但我还没有找到访问这些信息的方法。有人能帮我吗?
您可以对元素使用getBoundingClientRect()
方法来获取维度。它考虑了变换矩阵(所以你不需要自己做任何数学运算)。
var elementDimensions = element.getBoundingClientRect();
jsFiddle。
哇,这比我预想的要棘手。我和你一样惊讶,没有一个简单的方法。
这是一个概念的证明。
这是JS:
$('div').each(function() {
var matrix = window.getComputedStyle(this).webkitTransform,
data;
if (matrix != 'none') {
data = matrix.split('(')[1].split(')')[0].split(',');
} else {
data = [1,null,null,1];
}
$(this).text($(this).width() * data[0] + 'x' + $(this).height() * data[3]);
});
关键是getComputedStyle()
函数,它以字符串的形式返回矩阵,必须将其解析为数组才能使用。然而,它包含渲染的变换比率,可以将其乘以CSS维度以获得渲染的大小。
参考:CSS技巧
相关文章:
- 使用JavaScript在Json中提取时,将数组的元素转换为String
- 将 DOM 元素转换为具有所有继承的 JavaScript 类
- 将元素转换为可丢弃区域的要求是什么
- 正在将DOM元素转换为原始HTML字符串
- 是否可以将一个DOM元素转换为另一个?或者从中复制所有属性
- parseInt() 不会将数组的每个数组元素转换为整数
- 将 SVG 元素转换为字符串
- 将 HTML/CSS 元素转换为可重用的 AngularJS 指令
- 将 HTML 元素转换为图像(服务器端)
- 如何在 Javascript 中从混合的 HTML 字符串/DOM 元素转换为 DOM 元素
- 如何使用 JavaScript 将输入提交元素转换为按钮元素
- 如何将各种元素转换为绝对中心
- 将 DOM 元素转换为 HTML 代码并显示在页面上的文本区域中
- 将html元素转换为字符串Javascript(使用搜索获得,而不是内部/外部html)
- Javascript+CSS:从绝对定位的元素转换为CSS转换(左、上、宽、高到translateX、translate
- 将html img元素转换为画布
- 如何将SVG元素转换为PDF
- 将DIV元素转换为字符串
- 如何将计算器运算元素转换为字符串以获得解,然后将解返回到元素中
- 使用Form元素转换/更改Div元素