我不确定我是否设置了某些元素的位置错误,或者我根本无法使用"%"用于matrix
转换。我试图做这样的事情 - >
element.style.transform="matrix(1,0,0,1,0,-100%)"
但这没有任何作用。
答案 0 :(得分:2)
不,您无法在matrix
转换功能中使用百分比值。以下是W3C Specs for Transform Functions的摘录。如您所见,matrix
函数的参数仅指定为<number>
,而translate
函数的参数指定为<number-percentage>
。这表明矩阵只能接受数值,而翻译可以接受百分比。
matrix()= matrix(&lt; number&gt; [,&lt; number&gt;] {5,5})
以六个值a-f的变换矩阵的形式指定2D变换。
translate()= translate(&lt; length-percentage&gt; [,&lt; length-percentage&gt;]?)
通过向量[tx,ty]指定2D平移,其中tx是第一个平移值参数,ty是可选的第二个平移值参数。如果&lt; ty&gt;没有提供,ty为零值。
translateX()= translateX(&lt; length-percentage&gt;)
指定X方向上给定量的平移。
translateY()= translateY(&lt; length-percentage&gt;)
指定Y方向上给定量的平移。
matrix3d()= matrix3d(&lt; number&gt; [,&lt; number&gt;] {15,15})
将3D变换指定为以列为主的16个值的4x4齐次矩阵。
translate3d()= translate3d(&lt; length-percentage&gt;,&lt; length-percentage&gt;,&lt; length&gt;)
指定矢量[tx,ty,tz]的3D平移,tx,ty和tz分别是第一,第二和第三平移值参数。
以下是W3C Spec定义<number>
:
数值由&lt; number&gt;表示,表示实数,可能包含小数组件。
当按字面意思书写时,数字可以是整数,也可以是零或更多的十进制数字,后跟一个点(。)后跟一个或多个十进制数字,还可以选择一个由&#34; e&#34;组成的指数。或&#34; E&#34;和整数。它对应于&lt; number-token&gt;在CSS语法模块[CSS3SYN]中生成。与整数一样,数字的第一个字符可以紧跟在 - 或+之前,以表示数字的符号。
您应该将百分比值转换为正常实数,然后在matrix
函数中使用它。它通常是所需轴(包括边框和填充)*中所需百分比的方框。因此,对于100x100px尺寸,5px填充和所有边上1px边框的盒子,100%平移将等于112,而-50%将等于-56。
您可以参考The Matrix Resolutions网站查看其实际情况。以下是两种方法的演示。
div {
height: 100px;
width: 100px;
margin: 10px;
padding: 5px;
border: 1px solid rebeccapurple;
background: rgba(102, 51, 153, 0.25);
}
.translate {
transform: translate(100%, 100%);
}
.matrix {
transform: matrix(1, 0, 0, 1, 112, 112);
}
&#13;
<div class='matrix'>Hello! I'm using matrix.</div>
<div class='translate'>Hello! I'm using translate.</div>
&#13;