- From: Simon Pieters <simonp@opera.com>
- Date: Fri, 18 Dec 2015 12:05:53 +0100
- To: "Philip Walton" <philip@philipwalton.com>, "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: "www-style list" <www-style@w3.org>
On Fri, 13 Nov 2015 18:33:28 +0100, Tab Atkins Jr. <jackalmage@gmail.com>
wrote:
> On Sun, Nov 8, 2015 at 12:51 PM, Philip Walton <philip@philipwalton.com>
> wrote:
>> For example, if I have a gutter size and I want to use the positive
>> version
>> in a child element margin and then negate that in the parent element's
>> negative margin, currently I'd do something like this:
>>
>> ```
>> .parent {
>> margin: -1em;
>> }
>> .child {
>> margin: 1em;
>> }
>> ```
>>
>> If I try doing the same thing with custom properties in Firefox is
>> fails.
>> I'm assuming that's a bug, but I wanted to ask here to make sure.
>>
>> ```
>> .parent {
>> --gutter: 1em;
>> margin: -var(--gutter); /* declaration ignored in FF */
>> }
>> .child {
>> margin: var(--gutter);
>> }
>> ```
>>
>> To make this work in FF today you have to do `calc(-1*var(--gutter))`,
>> which
>> isn't ideal.
>
> As Boris says, FF's behavior is correct. `-var(...)` is a function
> named -var, which is not a variable reference. You can't negate
> functions like that *anywhere* due to the way ident parsing works;
> it's not specific to variables.
But it seems to me you're only likely to want it for var(). Since this
appears to be a pattern people use in the preprocessor world, should we
just support it? It wouldn't be difficult to define a new -var(x) function
as calc(-1 * var(x)), right? Too much of a hack? Slippery slope?
--
Simon Pieters
Opera Software
Received on Friday, 18 December 2015 11:06:26 UTC