У вас есть две проблемы.Первый из них касается формулы без масштаба:
calc(0.75 + (0.3 - 0.75) * ((100vw - 320px) / (780 - 320)))
Это недопустимо, поскольку вы добавляете number
(0.75
) с length
((0.3 - 0.75) * ((100vw - 320px) / (780 - 320))
)
В + или - убедитесь, что обе стороны имеют одинаковый тип, или что одна сторона - <number>
, а другая - <integer>
.Если обе стороны одного типа, разрешите этот тип.Если одна сторона - <number>
, а другая - <integer>
, разрешите в. ref
Вторая проблема - это только масштабвзять число, поэтому вам нужно исправить формулу, чтобы преобразовать вторую часть в число, удалив любые единицы (vw
, px
и т. д.).
По сути, то, что вы хотите сделать, не можетсделать это таким образом, потому что у вас нет возможности преобразовать (100vw - 320px)
в число, если только вы не решили использовать JS, поскольку это выходит за рамки CSS, потому что CSS не является языком программирования.Даже с JS вам нужно будет определить, какова логика преобразования числа пикселей в число, отличное от числа пикселей.
Использование той же формулы в right
и с percentage
будет работать нормально, потому что:
Если проценты приняты в контексте, в котором помещено выражение, и они определены как относящиеся к другому типу, кроме <number>
, то <percentage-token>
рассматривается как этот тип.Например, в свойстве width проценты имеют тип <length>
.Процент имеет тип <percentage>
только в том случае, если в этом контексте значения <percentage>
не являются используемыми значениями, совместимыми с любым другим типом.Если проценты обычно не допускаются вместо calc (), то выражение calc (), содержащее проценты, в этом контексте недопустимо. ref
Таким образом, в этом случае разрешено использовать процент с right
, потому что мы можем разрешить его, таким образом, форум будет действительным, потому что в конце он будет выглядеть как A% + Bpx
.