Re: WebKit now supports CSS Variables

On Jun 26, 2008, at 9:09 PM, Andrew Fedoniouk wrote:

>
> Daniel Glazman wrote:
>> Håkon Wium Lie wrote:
>>> Not according to the proposal, section 3.3:
>>>
>>>  The declaration becomes invalid if the variable does not exist.
>> Oops, we'll fix that ;-)
>> </Daniel>
>
> Consider the following:
>
> @variables
> {
>  ThemeColor: #fe8d12;
> }
>
> body
> {
>  color: var(ThemeColor);
> }
>
> div
> {
>  color: inherit;
> }
>
> Question: what would be the value of div::color?
> In other words: what value non-existent variable is being evaluated  
> to?
> Some sort of 'undefined'
>

No.... inherit values in the CSS back end (in the declaration) are  
their own type.  You get an inherit value... variables don't affect  
this at all.

> One more question:
>
> @variables
> {
>  ThemeSomething: #fe8d12;
> }
>
> body
> {
>  background: var(ThemeSomething) green;
> }
>
> Question is: where var(ThemeSomething) will go?

The CSS declaration contains a property/value pair for "background."   
The shorthand is not expanded.  None of this is in the spec., but in  
my implementation I have a special value that represents the whole  
unresolved right side, a CSSVariableDependentValue.  If you ask for  
its cssText you'll get the raw expression, e.g., "var(ThemeSomething)  
green."  I don't think there's any need for this class to be  
exposed... it can just be a CUSTOM value in the CSS OM.

>
> What will happen if variable will be changed from "#fe8d12"
> to, say, "url(yeek.png)" in runtime?
>

Any calls to a variable remain unchanged in the back end  
declarations.  The medium-specific front end information will update  
to try to resolve the new value (and when that fails, the property/ 
value pair will be ignored.)

I encourage you to write tests against the WebKit implementation and  
try it out.  You might answer your own questions and/or find bugs that  
way that would help us refine the implementation.

dave
(hyatt@apple.com)

Received on Friday, 27 June 2008 03:06:45 UTC