CSS3 2D转换模块:多个函数:非交换情况下函数应用的顺序

CSS3 2D转换模块:多个函数:非交换情况下函数应用的顺序,css,matrix,transform,transformation,Css,Matrix,Transform,Transformation,在AdobePress出版的《现代网络CSS动画和转换》一书的“二维转换”一节中指出: 可以将变换嵌套到任意深度。结果 应用第一个变换,然后应用第二个变换 转变,然后是第三次,等等 我想知道的是,书中没有明确说明 在功能列表中,是组合的,即应用于要转换的对象 以从左到右或从右到左的方式 谢谢。功能列表中的功能从右向左应用 这可以通过查看我编写的以下代码片段的浏览器输出看到: 我想调查列出的函数是从右向左还是从左向右组合的, 因此,我通过以下页面进行了测试: <!DOCTYPE html&g

在AdobePress出版的《现代网络CSS动画和转换》一书的“二维转换”一节中指出:

可以将变换嵌套到任意深度。结果 应用第一个变换,然后应用第二个变换 转变,然后是第三次,等等

我想知道的是,书中没有明确说明 在功能列表中,是组合的,即应用于要转换的对象 以从左到右或从右到左的方式


谢谢。

功能列表中的功能从右向左应用

这可以通过查看我编写的以下代码片段的浏览器输出看到:

我想调查列出的函数是从右向左还是从左向右组合的, 因此,我通过以下页面进行了测试:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Example Code</title>
    <meta name="description" content="Example Code" />
    <meta name="author" content="John Doe" />
    <style type="text/css">
    * {
            border: 0;
            margin: 0;
            padding: 0;
}
        #container {
            width: 200px;
            height: 400px;
            background-color: purple;
        }
        .box {
            padding: 50px;
            width: 100px;
            height: 100px;
            background-clip: content-box;
            background-color: yellow;
            transform-origin: 50px 50px;
        }
        .box.one:hover {
            transform: translateX(100px) skewY(30deg);
        }
        .box.two:hover {
            transform: skewY(30deg) translateX(100px);
        }
    </style>
</head>
<body>
    <div id="container">
        <div class="box one">
            HELLO
        </div>
        <div class="box two">
            WORLD
        </div>
    </div>
</body>
</html> 
在这种情况下,translateX和skewY变换不会相互转换,即顺序问题。 我发现,这本书中似乎缺少的信息是,推导出 变换后的图片,首先需要在右侧应用变换,例如skewY 对于框1,然后依次将每个变换应用于其左侧,例如translateX 第一格。在每种情况下,运算都是相对于原点计算的,原点是 我已设置为黄色矩形的左上角

我在转换列表中找到的关于转换应用顺序的信息 与我在CSS3规范和其他计算机图形系统中发现的一致 例如OpenGL/WebGL:

坐标系的最终转换值通过以下方式获得: 将列表中的每个函数转换为其相应的矩阵 在变换函数的数学描述中定义,然后 将矩阵相乘