【问题标题】:CSS3 rotate3d pr rotateX get actual height of elementCSS3 rotate3d pr rotateX 获取元素的实际高度
【发布时间】:2014-01-17 04:36:28
【问题描述】:

我想在 x 轴上旋转 3d 时获得元素的实际高度。我将尝试用下面的图形来解释:

元素的正常高度:200px

100px 角度旋转 45 度时实际高度为 118px:

1000px 角度旋转 45 度时实际高度为 138px:

计算这个高度值的常规公式(没有透视):

x = h * sin(angle)

此公式的高度必须为 142 像素。但它与这个值不同。可能透视会改变高度。但是我没有找到任何计算这个高度的公式。

有人知道吗?

【问题讨论】:

标签: javascript css css-transforms perspective


【解决方案1】:

我受益于efe 的评论并计算了旋转元素的真实视图高度。

djjeckanswer上有解决方案的技术说明。

您可以通过示例查看此问题的答案:http://jsfiddle.net/TqJJL/3/

使用此代码计算实际高度:

// initial coordinates
var A = 0;
var B = width; // default size of element
// new coordinates
A = calc(A, angle*Math.PI/180, p);
B = calc(B, angle*Math.PI/180, p);
// translate back
A += width/2;
B += width/2;
if(B < A) { var tmp = A; A = B; B = tmp; } // swap

var realHeight = B-A;

function calc(oldx, angle, p) {
    var x = Math.cos(angle) * oldx;
    var z = Math.sin(angle) * oldx;

    return x * p / (p+z);
}

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 2010-10-16
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多