diff --git a/css-variables-1/Overview.bs b/css-variables-1/Overview.bs index 347ba0e9ff3..1eecc55beb7 100644 --- a/css-variables-1/Overview.bs +++ b/css-variables-1/Overview.bs @@ -59,10 +59,10 @@ Defining Custom Properties: the '--*' family of properties
 	Name: --*
 	Value: <>?
-	Initial: (nothing, see prose)
+	Initial: the [=guaranteed-invalid value=]
 	Applies to: all elements
 	Inherited: yes
-	Computed value: specified value with variables substituted (but see prose for "invalid variables")
+	Computed value: specified value with variables substituted, or the [=guaranteed-invalid value=]
 	Animatable: no
 	
@@ -262,6 +262,22 @@ Custom Property Value Syntax to make maintaining the translations simpler. +

+Guaranteed-Invalid Values

+ + The initial value of a [=custom property=] is a guaranteed-invalid value. + As defined in [[#using-variables]], + using ''var()'' to substitute a [=custom property=] with this as its value + makes the property referencing it [=invalid at computed-value time=]. + + This value serializes as the empty string, + but actually writing an empty value into a custom property, + like ''--foo: ;'', + is a valid (empty) value, + not the [=guaranteed-invalid value=]. + If, for whatever reason, + one wants to manually reset a variable to the [=guaranteed-invalid value=], + using the keyword ''initial'' will do this.

@@ -281,10 +297,19 @@ Resolving Dependency Cycles

(including in the fallback argument of ''var()''), add an edge between prop and the var. Edges are possible from a custom property to itself. + If there is a cycle in the dependency graph, all the custom properties in the cycle - must compute to their initial value - (which is a guaranteed-invalid value). + are cyclic at computed-value time, + and must compute to the [=guaranteed-invalid value=]. + + Note: Defined properties that participate in a dependency cycle + either end up with invalid variables in their value + (becoming [=invalid at computed-value time=]), + or define their own cyclic handling + (like 'font-size' using ''em'' values). + They do not computed to the [=guaranteed-invalid value=] + like custom properties do.
This example shows a custom property safely using a variable: