JavaScript从常规CSS获取矩阵转换,并将matrix2D转换为matrix3D

JavaScript从常规CSS获取矩阵转换,并将matrix2D转换为matrix3D,javascript,css,matrix,Javascript,Css,Matrix,我需要从像这样的常规CSS变换中得到矩阵变换:rotateX(10deg)rotateZ(10deg) 我知道WebKit(WebKitCSSMatrix)有一个现成的解决方案,但Firefox或IE没有这样的解决方案 因此,我尝试通过将转换设置为不可见(不在DOM中)并使用getComputedStyle获取矩阵,但如果元素隐藏或从文档中分离,则此方法不会返回任何结果 是否有一个将值转换为矩阵的好教程 那么,如何将二维矩阵转换为三维矩阵呢?从6到16个值…您可以自己计算矩阵。本页介绍如何将旋转

我需要从像这样的常规CSS变换中得到矩阵变换:
rotateX(10deg)rotateZ(10deg)

我知道WebKit(WebKitCSSMatrix)有一个现成的解决方案,但Firefox或IE没有这样的解决方案

因此,我尝试通过将转换设置为不可见(不在DOM中)并使用getComputedStyle获取矩阵,但如果元素隐藏或从文档中分离,则此方法不会返回任何结果

是否有一个将值转换为矩阵的好教程


那么,如何将二维矩阵转换为三维矩阵呢?从6到16个值…

您可以自己计算矩阵。本页介绍如何将旋转描述为二维矩阵:

对于旋转,这将是:

可以通过这些属性访问矩阵值。对于2d,不需要修改最后一行。要在css中初始化矩阵,请使用:
矩阵(a、b、c、d、e、f)

对于3D矩阵您可以在这里找到一个很好的介绍:

然后阅读如何手动设置矩阵:


在这两种情况下,如果要应用多个变换,则必须将多个矩阵相乘。有关如何执行此操作的信息可在此处找到:

您可以自己计算矩阵。本页介绍如何将旋转描述为二维矩阵:

对于旋转,这将是:

可以通过这些属性访问矩阵值。对于2d,不需要修改最后一行。要在css中初始化矩阵,请使用:
矩阵(a、b、c、d、e、f)

对于3D矩阵您可以在这里找到一个很好的介绍:

然后阅读如何手动设置矩阵:

在这两种情况下,如果要应用多个变换,则必须将多个矩阵相乘。有关如何执行此操作的信息,请参见此处:


注意:
getComputedStyle
方法仅适用于附加到文档中的元素


让我们从一个函数开始,该函数将使的元素成为隐藏元素,并将其附加到文档中:

var make_test_el = 
    function () {
        var el = document.createElement("div");

        // some browsers doesn't add transform styles if display is inline
        el.style.display = "block";

        // to be sure your element won't be shown 
        el.style.width = "0px";
        el.style.height = "0px";
        el.style.margin = "0px";
        el.style.padding = "0px";
        el.style.overflow = "hidden";

        document.body.appendChild(el);
        return el;
    }
然后通过以下代码使用它:


演示:

您将看到的结果可能是
矩阵3d(…)
矩阵(…)

它取决于浏览器的RenderEngine给定值
例如:
IE10将始终为您提供
矩阵3d(…)

但是对于chromeopera而言,取决于给定值

但是我不知道如何将2D矩阵转换为3D矩阵 这个问题我也问过了
实际上,矩阵值很难理解
祝你好运…


注意:
getComputedStyle
方法仅适用于附加到文档中的元素


让我们从一个函数开始,该函数将使的元素成为隐藏元素,并将其附加到文档中:

var make_test_el = 
    function () {
        var el = document.createElement("div");

        // some browsers doesn't add transform styles if display is inline
        el.style.display = "block";

        // to be sure your element won't be shown 
        el.style.width = "0px";
        el.style.height = "0px";
        el.style.margin = "0px";
        el.style.padding = "0px";
        el.style.overflow = "hidden";

        document.body.appendChild(el);
        return el;
    }
然后通过以下代码使用它:


演示:

您将看到的结果可能是
矩阵3d(…)
矩阵(…)

它取决于浏览器的RenderEngine给定值
例如:
IE10将始终为您提供
矩阵3d(…)

但是对于chromeopera而言,取决于给定值

但是我不知道如何将2D矩阵转换为3D矩阵 这个问题我也问过了
实际上,矩阵值很难理解

祝您好运……

在您的图片中,vqlues是否表示m11、m21、m31、m12、m22、m32、m13、m23和m33?m值用于3d矩阵。使用属性a-f。在您的图片中,vqlues是否表示m11、m21、m31、m12、m22、m32、m13、m23和m33?m值用于3d矩阵。使用属性a-f。