css 在transform:rotate()中使用calc()

eqoofvh9  于 2023-03-14  发布在  其他
关注(0)|答案(2)|浏览(195)

如何使用calc()确定transform:rotate()的Angular 值?
!mdn docs for the CSS calc() function声明:
calc() CSS函数可用于需要<length><frequency><angle><time><number><integer>的任何位置。使用calc(),您可以执行计算以确定CSS属性值。
但是,使用calc()transform:rotate()创建Angular 值对我来说不起作用。
this blog doesn't work--transform: rotate(calc(1turn - 32deg));的建议,也没有以这种方式使用calc()的操作的类似变体。
参见this codepen for verification-仅第五个<div>按预期旋转**,并且**未使用calc()确定Angular 。
下面是codepen中的主要代码:

div {
  height: 200px;
  width: 200px;
  background-color: red;
}

.one {
  transform: rotate(calc(1turn - 32deg));
}

.two {
  transform: rotate(calc(360deg - 90deg));
}

.three {
  transform: rotate(calc(360deg/4deg));
}

.four {
  transform: rotate(calc(22deg + 23deg));
}

.five {
  transform: rotate(45deg);
}

我在最新的Chrome、Firefox开发者版和Safari上也遇到了同样的问题。
其他关于这个问题的讨论也存在,但没有提供任何解决方案。例如:

7uzetpgm

7uzetpgm1#

空格在calc()中很重要

正确:

.three {
    transform: rotate(calc(360deg / 4));
}

不正确:

.three {
    transform: rotate(calc(360deg/4deg));
}

因为360 deg/ 4deg == 90和360 deg/ 4 = 90deg,你要找的是一个度,而不是一个纯数字。

r7knjye2

r7knjye22#

我也遇到过同样的问题,也在Chrome(v59.0)和FF(v54.0)上尝试过其他Angular transform函数中的calc()函数,如skewX和skewY。在这两种情况下,skew函数都没有像预期的那样倾斜。
注意,用于 * 基于长度的 * translate()变换函数族的calc()函数 * 确实 * 有效(参见this Fiddle)。
translate3D()的z方向在我的Fiddle中不起作用,但您可以使用this page上的Codepen链接查看它的工作方式
注意skewX()如何在#div1作为硬编码Angular 时正常工作,但是如果使用calc()作为参数重写(例如,尝试calc(-45deg + 1rad)),它会破坏#div1的css。

相关问题