背景
在web端刷微博点开图片时,发现有图片向左旋转和向右旋转等功能,出于职业本能,我自然的猜测:当然是用transfrom: rotate(ndeg)
做的啦!
但是打开console却发现跟我想的有点不太一样:
渣浪用的居然是matrix
属性(其实这里用matrix
有种炫技的赶脚,后文会提)!
说起matrix
,FEer可能既熟悉又陌生,毕竟我们平时使用transform
时,其实更多的是使用rotate
, translate
, scale
等属性,这些是基于matrix
的魔改,属于造福人类的属性,但是matrix
我们却用(gen)的(ben)并(mei)不(yong)多(guo)。此时我也认识到了自己知识的短浅,赶紧查漏补缺,写下此文加深对matrix
大佬的印象。
属性总结
基本用法
1 | transform: matrix(a, b ,c ,d ,e ,f); |
转换公式
translate
1 | transform: matrix(0, 0, 0, 0, tx, ty); |
等于:
1 | transform: translate(tx, ty); |
scale
1 | transform: matrix(sx, 0, 0, sy, 0, 0); |
等于:
1 | transform: scale(sx, sy); |
rotate
这个稍微复杂一点,需要用到三角函数,这边总结几个常用角度,建议使用直接使用rotate
:
rotate(0deg)
等于:
1 | transform: matrix(1, 0, 0, 1, 0, 0); |
rotate(90deg)
等于:
1 | transform: matrix(0, 1, -1, 0, 0, 0); |
rotate(180deg)
等于:
1 | transform: matrix(-1, 0, 0, -1, 0, 0); |
rotate(270deg)
等于:
1 | transform: matrix(0, -1, 1, 0, 0, 0); |
skew
skew
同rotate
,还是不要用复杂的matrix
了
镜像对称效果
对于这种需求,使用matrix
再好不过
左右镜像对称
1 | transform: matrix(-1, 0, 0, 1, 0, 0); |
上下镜像对称
1 | transform: matrix(1, 0, 0, -1, 0, 0); |
或者:
1 | transform: scale(-1); |