使用CSS,如何应用多个转换?
示例:在以下示例中,仅应用平移,而不应用旋转。
li:nth-child(2) {
transform: rotate(15deg);
transform: translate(-20px,0px);
}
使用CSS,如何应用多个转换?
示例:在以下示例中,仅应用平移,而不应用旋转。
li:nth-child(2) {
transform: rotate(15deg);
transform: translate(-20px,0px);
}
当前回答
将来的某个时候,(现在可用,请参阅下面的更新)我们可以这样写:
li:nth-child(2) {
rotate: 15deg;
translate:-20px 0px;
}
当在元素上应用单个类时,这将变得特别有用:
<div class="teaser important"></div>
.teaser{rotate:10deg;}
.important{scale:1.5 1.5;}
该语法在进行中的CSS Transforms Level 2规范中定义,但除了chrome canary之外,找不到任何关于当前浏览器支持的内容。希望有一天我会回来更新浏览器支持;)
在本文中找到了有关当前浏览器的变通方法的信息,您可能希望查看这些信息。
更新:功能已在firefox72中
更新:现已推出chrome 104、edge 104、safari 14.1,请参见https://web.dev/css-individual-transform-properties/#:~:text=支持%20这些%20属性。-,浏览器%20支持,-%3A
其他回答
从这里开始,在CSS中,若您重复2个或更多值,则始终应用最后一个值,除非使用!重要的标签,但同时避免使用!尽可能重要,所以在你的情况下这就是问题所在,所以在这种情况下,第二个变换会覆盖第一个变换。。。
那你怎么能做你想做的?。。。
别担心,转换同时接受多个值。。。因此,下面的代码将起作用:
li:nth-child(2) {
transform: rotate(15deg) translate(-20px, 0px); //multiple
}
如果您想玩变换,请从下面的MDN运行iframe:<iframe src=“https://interactive-examples.mdn.mozilla.net/pages/css/transform.html“class=”interactive“width=”100%“frameborder=”0“height=”250“></iframe>
查看下面的链接了解更多信息:
<<CSS转换>>
您还可以使用额外的标记层应用多个转换,例如:
<h3 class="rotated-heading">
<span class="scaled-up">Hey!</span>
</h3>
<style type="text/css">
.rotated-heading
{
transform: rotate(10deg);
}
.scaled-up
{
transform: scale(1.5);
}
</style>
这在使用Javascript使用变换制作元素动画时非常有用。
我加上这个答案并不是因为它可能有帮助,而是因为它是真的。
除了使用现有答案解释如何通过链接进行多个翻译之外,您还可以自己构建4x4矩阵
我从谷歌搜索时发现的一些随机网站上抓取了以下图片,其中显示了旋转矩阵:
绕x轴旋转:绕y轴旋转:绕z轴旋转:
我找不到翻译的好例子,所以假设我记得/理解正确,翻译:
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[x y z 1]
更多信息请参阅维基百科关于转换的文章以及Pragamatic CSS3教程,该教程对其进行了很好的解释。我发现的另一个解释任意旋转矩阵的指南是Egon Rath关于矩阵的注释
当然,矩阵乘法在这些4x4矩阵之间起作用,因此要执行旋转后进行平移,需要制作适当的旋转矩阵并将其乘以平移矩阵。
这可以给你多一点自由,让你做得恰到好处,也会让任何人几乎完全不可能理解它在做什么,包括你在内。
但是,你知道,它是有效的。
编辑:我刚刚意识到我错过了提到这可能是最重要和最实用的用途,那就是通过JavaScript逐步创建复杂的3D转换,这样做会更有意义。
我学到的教训。
如果您使用的是样式的React css,请不要包含分号,即使是在它的末尾,因为它是由React自动内部包含的。
就像:
style={
transform: "rotate(90deg) scaleX(-1)",
}
将来的某个时候,(现在可用,请参阅下面的更新)我们可以这样写:
li:nth-child(2) {
rotate: 15deg;
translate:-20px 0px;
}
当在元素上应用单个类时,这将变得特别有用:
<div class="teaser important"></div>
.teaser{rotate:10deg;}
.important{scale:1.5 1.5;}
该语法在进行中的CSS Transforms Level 2规范中定义,但除了chrome canary之外,找不到任何关于当前浏览器支持的内容。希望有一天我会回来更新浏览器支持;)
在本文中找到了有关当前浏览器的变通方法的信息,您可能希望查看这些信息。
更新:功能已在firefox72中
更新:现已推出chrome 104、edge 104、safari 14.1,请参见https://web.dev/css-individual-transform-properties/#:~:text=支持%20这些%20属性。-,浏览器%20支持,-%3A