Skip to content

Commit ec2ebea

Browse files
committed
[css-mixins] Add intro section
1 parent 4bd0df8 commit ec2ebea

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

css-mixins-1/Overview.bs

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,51 @@ Introduction {#intro}
4242

4343
<em>This section is not normative.</em>
4444

45-
Issue: TODO
45+
Note: At this time, this specification only defines [=custom functions=],
46+
which operate at the level of CSS values.
47+
It is expected that it will define "mixins" later,
48+
which are functions that operate at the style rule level.
49+
50+
[=Custom properties=] give authors a lot of power
51+
to define useful, sometimes complex values
52+
in one place,
53+
and then re-use them across their stylesheet.
54+
They can vary across the document,
55+
or based on Media Queries or other conditionals,
56+
making them very flexible and responsive.
57+
58+
However, their values are <em>fixed</em> at the point they're defined,
59+
unable to be changed except by fully overriding their previous definition:
60+
a ''--shadow: 2px 2px var(--shadow-color)'' declaration
61+
takes its ''--shadow-color'' value from the element it's declared on,
62+
and later changes to ''--shadow-color'' on descendant elements
63+
don't alter the value of ''--shadow'' for them;
64+
they continue to use the shadow color defined where ''--shadow'' was defined.
65+
This is a common source of confusion for authors
66+
making heavy use of composite variables like this.
67+
68+
[=Custom functions=] allow authors the same power as [=custom properties=],
69+
but <em>parameterized</em>:
70+
they have the same flexibility and conditionality as a [=custom property=] definition,
71+
but take values from other custom properties
72+
(or explicitly as arguments)
73+
<em>at the point of use</em>.
74+
For example, instead of a ''--shadow'' [=custom property=],
75+
a ''--shadow()'' [=custom function=] could be defined instead,
76+
like:
77+
78+
<pre highlight=css>
79+
@function --shadow(--color <color> : var(--shadow-color)) {
80+
result: 2px 2px var(--color, black);
81+
}
82+
83+
.foo {
84+
--shadow-color: blue;
85+
box-shadow: --shadow(); // produces a blue shadow
86+
/* or just */
87+
box-shadow: --shadow(blue);
88+
}
89+
</pre>
4690

4791
<!-- Big Text: @function
4892

0 commit comments

Comments
 (0)