CSS matrix() 函数

CSS matrix() 语法

在 CSS 中,matrix() 函数一般作为 transform 属性的值,用于定义 2D 变换矩阵。

matrix() 可以同时实现平移、旋转、缩放、倾斜等多种变换效果,它通过一个 2 x 3 矩阵(6 个值)来描述复杂的变换组合,适合需要精确控制的场景。

语法:

transform: matrix(a, b, c, d, e, f);

说明:

matrix() 函数接受以下参数。

  • a 和 d 控制缩放(x 轴和 y 轴)。
  • b 和 c 控制倾斜(skew)。
  • e 和 f 控制平移(x 轴和 y 轴)。

它对应的矩阵结构如下:

[ a  c  e ]
[ b  d  f ]

每个点 (x, y) 在变换后的位置 (x', y') 的计算方式为:

x' = a * x + c * y + e
y' = b * x + d * y + f

对于 matrix() 函数,小伙伴们需要清楚以下几点:

  • matrix() 可以将 translate()scale()rotate()skew() 等多个变换合并为一个函数调用,从而提高性能和可读性。
  • matrix() 同样可以与其他函数(如 rotate() 或 scale())等一起使用,比如:transform: matrix(...) rotate(30deg);。

在实际开发中,对于一般的变换效果(如平移、缩放、旋转等),我们更推荐使用单独的函数来实现,因为它们更加简单直观。matrix() 函数主要用于高级场景,比如:

  • 通过 JavaScript 动态计算矩阵值。
  • 高级动画或图形处理。
  • 从设计工具(如 Photoshop)中导出变换。

提示: translate()、scale()、rotate() 等函数的底层,本质上都是基于 matrix() 来实现的。

CSS matrix() 摘要

属于 CSS3 变换
使用频率
兼容性 查看
官方文档 查看
MDN 查看

CSS matrix() 示例

接下来,我们通过几个简单的例子来讲解一下 CSS matrix() 函数是如何使用的。

示例 1:matrix() 实现缩放效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: lightskyblue;
            transform: matrix(1.5, 0, 0, 1.5, 50, 50);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

matrix() 实现缩放效果

分析:

在这个例子中,matrix(1.5, 0, 0, 1.5, 50, 50) 等价于同时应用 scale(1.5) 和 translate(50px, 50px)。也就是说,下面两种方式是等价的。

/* 方式1 */
matrix(1.5, 0, 0, 1.5, 50, 50)

/* 方式2 */
scale(1.5)
translate(50px, 50px)

示例 2:matrix() 实现旋转效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            margin: 100px;
            background-color: lightskyblue;
            transform: matrix(0.707, 0.707, -0.707, 0.707, 0, 0);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

matrix() 实现旋转效果

分析:

matrix(0.707, 0.707, -0.707, 0.707, 0, 0) 等价于 rotate(45deg)。其中, cos(45°)=0.707, sin(45°)=0.707。

示例 3:matrix() 实现倾斜效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            margin: 100px;
            background-color: lightskyblue;
            transform: matrix(1, 0.5, 0, 1, 0, 0);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

matrix() 实现倾斜效果

分析:

matrix(1, 0.5, 0, 1, 0, 0) 等价于 skewY(0.5rad),它表示沿 x 轴倾斜(b=0.5 对应 tan(θ)、约 26.6 度),无缩放(a=1、d=1)和平移(e=0、f=0)。

最终,div 元素会向右倾斜,从而形成一个平行四边形效果。

上一篇: rotate()

下一篇: perspective()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号