Skip to content

Commit a310957

Browse files
committed
[css-cascade-5] name-defining at-rules use layer order to resolve name collisions
1 parent 9d693a6 commit a310957

File tree

1 file changed

+48
-11
lines changed

1 file changed

+48
-11
lines changed

css-cascade-5/Overview.bs

+48-11
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ Conditional ''@import'' Rules</h3>
214214
<pre class='lang-css'>
215215
@import url("fallback-layout.css") supports(not (display: flex));
216216
@supports (display: flex) {
217-
...
217+
...
218218
}
219219
</pre>
220220
</div>
@@ -1196,15 +1196,15 @@ Cascade Layers</h3>
11961196

11971197
<pre class='lang-css'>
11981198
@layer utilities {
1199-
.padding-small {
1200-
/* specificity of 0,1,0 - explicit "utilities" layer */
1201-
padding: 0.25em;
1202-
}
1199+
.padding-small {
1200+
/* specificity of 0,1,0 - explicit "utilities" layer */
1201+
padding: 0.25em;
1202+
}
12031203
}
12041204

12051205
.card > .content {
1206-
/* specificity of 0,2,0 - implicit (first) layer */
1207-
padding: 1em;
1206+
/* specificity of 0,2,0 - implicit (first) layer */
1207+
padding: 1em;
12081208
}
12091209
</pre>
12101210

@@ -1214,6 +1214,43 @@ Cascade Layers</h3>
12141214
and come later in the source order.
12151215
</div>
12161216

1217+
Name-defining [=at-rules=]
1218+
such as ''@keyframes'' or ''@font-face''
1219+
that are defined inside [=cascade layers=]
1220+
also use the layer order when resolving name collisions.
1221+
1222+
<div class="example">
1223+
For example,
1224+
authors could override the animation from a framework,
1225+
by providing keyframes with the same name in a higher-priority layer:
1226+
1227+
<pre class='lang-css'>
1228+
/* establish the layer order, so the "override" layer takes precedence */
1229+
@layer framework, override;
1230+
1231+
@layer override {
1232+
@keyframes slide-left {
1233+
from { translate: 0; }
1234+
to { translate: -100% 0; }
1235+
}
1236+
}
1237+
1238+
@layer framework {
1239+
@keyframes slide-left {
1240+
from { margin-left: 0; }
1241+
to { margin-left: -100%; }
1242+
}
1243+
}
1244+
1245+
.sidebar { animation: slide-left 300ms; }
1246+
</pre>
1247+
1248+
In this case the ''override'' layer
1249+
has a higher cascade priority than the ''framework'' layer,
1250+
so <code>slide-left</code> will animate
1251+
using the <code>translate</code> property rather than <code>margin-left</code>.
1252+
</div>
1253+
12171254
<h4 id="layer-declaration">
12181255
Declaring Cascade Layers</h4>
12191256

@@ -1364,8 +1401,8 @@ Anonymous Layers</h5>
13641401

13651402
<pre class=lang-css>
13661403
@layer {
1367-
@layer foo { /* layer 1 */ }
1368-
@layer foo { /* also layer 1 */ }
1404+
@layer foo { /* layer 1 */ }
1405+
@layer foo { /* also layer 1 */ }
13691406
}
13701407
</pre>
13711408

@@ -1375,10 +1412,10 @@ Anonymous Layers</h5>
13751412

13761413
<pre class=lang-css>
13771414
@layer {
1378-
@layer foo { /* layer 1 */ }
1415+
@layer foo { /* layer 1 */ }
13791416
}
13801417
@layer {
1381-
@layer foo { /* layer 2 */ }
1418+
@layer foo { /* layer 2 */ }
13821419
}
13831420
</pre>
13841421
</div>

0 commit comments

Comments
 (0)