- From: Brad Kemper <brkemper.comcast@gmail.com>
- Date: Thu, 25 Sep 2008 08:45:07 -0700
- To: David Hyatt <hyatt@apple.com>
- Cc: Anne van Kesteren <annevk@opera.com>, Mike Wilson <mikewse@hotmail.com>, "www-style@w3.org List" <www-style@w3.org>
- Message-Id: <F8CD260D-8D0F-47BE-B6F2-78EB6BFC03EE@gmail.com>
On Sep 25, 2008, at 2:02 AM, David Hyatt wrote:
> @-webkit-variables { a: foo; } div { color: green; } div { color:
> red; color: -webkit-var(a); }
>
> where "a" fails to resolve to any usable value that the div will end
> up red and not green. If the declaration held only one value per
> property, then you'd end up with a green color (and I don't think
> that's what an author would expect).
Does that still work with compound values? I would expect the
following to produce a 6px, solid, red line.
@-webkit-variables { a: foo; } div { color: green; } div { border: 1px
solid red; border: 6px -webkit-var(a); }
On Sep 25, 2008, at 1:33 AM, David Hyatt wrote:
> That hardly seems simpler to me. Variables as Daniel and I
> specified them can remain unresolved until you end up using those
> rules in a specific medium. This "global soup" approach is simple
> and intuitive for authors, since the variable names always cross
> stylesheet boundaries (without ever having to delay the parsing of a
> sheet because another sheet hasn't loaded yet), and the last rule
> specified in the sheet order wins.
One thing implied by Andrew's comments is that constants are not just
"variables lite", but are useful in their own right, in a way that
extends, not hampers, the idea of variables. But I don't see why we
couldn't have both. AFAIK, all programming languages have variables,
and some have constants too. So, let's say you start out with this for
defining variables:
@define {
mySimpleVariable: 5px;
myComplexVariable {
width: 5em;
height: 5em;
}
}
But if the author wanted it to act as a constant, where "first rule
overrides later rules", he could add a keyword to that rule that would
accomplish that by adding 1,000,000 to the specificity calculation:
@define constant {
mySimpleVariable: 5px;
myComplexVariable {
width: 5em;
height: 5em;
}
}
Or, instead of a keyword, maybe just using capital letters would do
the same trick (in programming, constants are commonly written in all
caps):
@define {
MY_SIMPLE_VARIABLE: 5px;
MY_COMPLEX_VARIABLE {
width: 5em;
height: 5em;
}
}
Received on Thursday, 25 September 2008 15:45:48 UTC