Css 为什么这个calc()函数不能在变换比例下工作?

Css 为什么这个calc()函数不能在变换比例下工作?,css,css-transforms,css-calc,Css,Css Transforms,Css Calc,calc()显然在转换中起作用,但这并不: transform: scale(calc(0.75 + (0.3 - 0.75) * ((100vw - 320px) / (780 - 320)))); 同样,这是可行的,但它基本上是相同的公式,只有百分比和小数。仅添加此项,以便您可以在此处看到公式的作用: right: calc(30% + (75 - 30) * ((100vw - 320px) / (780 - 320))); 例如,我有一个宽度为百分比的容器,最大宽度为300px。我希

calc()
显然在转换中起作用,但这并不:

transform: scale(calc(0.75 + (0.3 - 0.75) * ((100vw - 320px) / (780 - 320))));
同样,这是可行的,但它基本上是相同的公式,只有百分比和小数。仅添加此项,以便您可以在此处看到公式的作用:

right: calc(30% + (75 - 30) * ((100vw - 320px) / (780 - 320)));
例如,我有一个宽度为百分比的容器,最大宽度为300px。我希望它的子对象总是使用
transform:scale()
将其缩放到父对象当前实际宽度的百分比

为什么我的转换
calc
功能不起作用?使用铬


100vw-320px
用于计算窗口宽度的最小和最大尺寸。这里可以这样做吗?

您有两个问题。第一个是关于没有比例的公式:

calc(0.75 + (0.3 - 0.75) * ((100vw - 320px) / (780 - 320)))
这是无效的,因为您正在添加长度为
(0.3-0.75)*((100vw-320px)/(780-320))
)的
编号(
(0.75

在+或-,检查两侧的类型是否相同,或者一侧是
,另一侧是
。如果两侧为同一类型,则解析为该类型。如果一边是
,另一边是
,则解析为

第二个问题是,刻度只取一个数字,因此您需要修正公式,通过删除任何类型的单位(
vw
px
,等等)将第二部分转换为一个数字

<>基本上,你想做的事情不能这样做,因为你没有办法将你的<代码>(100VW-3PX)转换成一个数字,除非你考虑使用一些JS,因为这超出了CSS,因为CSS不是一种编程语言。即使使用JS,您也需要定义将像素数转换为非像素数背后的逻辑


right
percentage
中使用相同的公式可以正常工作,因为:

如果在表达式所在的上下文中接受百分比,并且它们被定义为相对于除
之外的另一种类型,则将
视为该类型。例如,在宽度属性中,百分比具有
类型。如果在该上下文中
值未与任何其他类型兼容,则百分比仅具有
类型。如果通常不允许用百分比代替calc(),则包含百分比的calc()表达式在该上下文中无效


因此,在这种情况下,百分比可以与
right
一起使用,因为我们可以解决它,因此该公式将是有效的,因为最终它将类似于
A%+Bpx

比例不需要任何单位,它只需要数字,那么vw和px呢?他们是单位。。。顺便说一句,整个公式是无效的,您不能用unitIt添加数字,但您需要使用包装器并为其指定宽度,而不是在公式中使用
(100vw-300px)
。现在,您在这个包装中放置的任何子项都将从上面的
calc(100vw-300px)
开始。提供一个实际的例子,我将向您展示一个实现您想要的实际解决方案。如果没有答案,您的问题既不是无法回答的,也不是对未来用户有用的,这是回答问题的主要标准。详细内容请阅读。@AndreiGheorghiu会在我们有时间的时候做的。谢谢。@AndreiGheorghiu是的,如果我们知道期望的结果,因为这显然是一个XY问题,并且是一个错误的方法来实现使用其他技术很容易实现的目标。