1.6 2D 转换

transform 属性控制 2D 转换

translate 平移

<p style="transform: translate(20px, 40px)">123</p>
// 右 20;下 40;

rotate 旋转

<p style="transform: rotate(30deg)">123</p>
// 顺时针 30 deg;

scale 缩放

<p style="transform: scale(2, 0.5)">123</p>
// x 2 倍;y 0.5 倍;

skew 倾斜

<p style="transform: skew(40deg, 10deg)">123</p>
// x 正下负上;y 正右负左;

矩阵变化

<p style="transform: matrix(0.866,0.5,-0.5,0.866,0,0)">123</p>
  • 说明
matrix(a, b, c, d, e, f)

a,c,e
b,d,f
0,0,1

x' = ax1 + cy1 + e;
y' = bx1 + dy1 + f;
h' = 1;

a:x 缩放
d:y 缩放

b:x 倾斜
c:y 倾斜

e:x 平移
f:y 平移

b+c:旋转
  • 简单玩玩
<div style="margin: 100px">
    <p id="p" style="transform: matrix(1,0,0,1,0,0)">123</p>
</div>

<span>a</span>
<button onclick="matrix('a', '0.1')">a+</button>
<button onclick="matrix('a', '-0.1')">a-</button>
<br />

<span>b</span>
<button onclick="matrix('b', '0.1')">b+</button>
<button onclick="matrix('b', '-0.1')">b-</button>
<br />

<span>c</span>
<button onclick="matrix('c', '0.1')">c+</button>
<button onclick="matrix('c', '-0.1')">c-</button>
<br />

<span>d</span>
<button onclick="matrix('d', '0.1')">d+</button>
<button onclick="matrix('d', '-0.1')">d-</button>
<br />

<span>e</span>
<button onclick="matrix('e', '10')">e+</button>
<button onclick="matrix('e', '-10')">e-</button>
<br />

<span>f</span>
<button onclick="matrix('f', '10')">f+</button>
<button onclick="matrix('f', '-10')">f-</button>
<br />

<script>
    var a = 1;
    var b = 0;
    var c = 0;
    var d = 1;
    var e = 0;
    var f = 0;

    function matrix(type, value) {
        if (type == 'a') {
            a = a + parseFloat(value);

        } else if (type == 'b') {
            b = b + parseFloat(value);

        } else if (type == 'c') {
            c = c + parseFloat(value);

        } else if (type == 'd') {
            d = d + parseFloat(value);

        } else if (type == 'e') {
            e = e + parseFloat(value);

        } else if (type == 'f') {
            f = f + parseFloat(value);
        }

        var tran = 'matrix('+a+','+b+','+c+','+d+','+e+','+f+')';
        $('#p').css('transform', tran);
    }
</script>