Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extending a compound selector violates extend semantics #1599

Closed
2 tasks done
nex3 opened this issue Jan 17, 2015 · 95 comments
Closed
2 tasks done

Extending a compound selector violates extend semantics #1599

nex3 opened this issue Jan 17, 2015 · 95 comments
Labels
bug Something isn't working CSS compatibility Support the CSS spec requires deprecation Blocked on a deprecation cycle

Comments

@nex3
Copy link
Contributor

nex3 commented Jan 17, 2015

Currently, when a compound selector is extended, Sass will only replace instances of the full extendee with the extender. For example:

.a {x: y}
.b {x: y}
.a.b {x: y}

.c {@extend .a.b}

produces

.a {x: y}
.b {x: y}
.a.b, .c {x: y}

when it should produce

.a, .c {x: y}
.b, .c {x: y}
.a.b, .c {x: y}

according to the semantics of @extend. We should fix this, especially as CSS moves closer to supporting @extend natively.

Tasks:

  • Deprecate existing behavior in stable.
  • Remove behavior from master.
@nex3 nex3 added bug Something isn't working CSS compatibility Support the CSS spec labels Jan 17, 2015
@nex3 nex3 added this to the 4.0 milestone Jan 17, 2015
@nex3 nex3 added the requires deprecation Blocked on a deprecation cycle label Jan 17, 2015
@lifeiscontent
Copy link

@nex3 any ideas when this might be fixed?

@chriseppstein
Copy link

To clarify:

.c { @extend .a.b } means "Style elements with class c, as if they had both of the classes .a and .b", It's semantically identical to .c { @extend .a; @extend .b; }

@ArmorDarks
Copy link

To be honest, I'm slightly confused.

This example seems to be perfectly right result for .c {@extend .a.b}:

.a {x: y}
.b {x: y}
.a.b, .c {x: y}

It's because we clearly asked to extend .a with specified by .b selector, not just .a or .b, or .a.b.

If we'd like to receive this:

.a, .c {x: y}
.b, .c {x: y}
.a.b, .c {x: y}

I'd more expect syntax like

.a {x: y}
.b {x: y}
.a.b {x: y}

.c {@extend .a, .b, .a.b}

or

.a {x: y}
.b {x: y}
.a.b {x: y}

.c {@extend .a.; @extend .b; @extend .a.b}

@nex3
Copy link
Contributor Author

nex3 commented Dec 14, 2016

@ArmorDarks When you write A {@extend B}, that means "all elements that match A should be styled as though they also matched B". In the example above, that translates to "all elements that match .c should be styled as though they also matched .a.b". If an element matches .a.b, that means it also matches both .a and .b individually, so .c {@extend .a.b} should mean the same thing as .c {@extend .a; @extend .b}.

nex3 added a commit to sass/sass-spec that referenced this issue Jun 2, 2017
nex3 added a commit that referenced this issue Jun 2, 2017
nex3 added a commit that referenced this issue Jun 2, 2017
nex3 added a commit that referenced this issue Jun 2, 2017
nex3 added a commit to sass/sass-spec that referenced this issue Jun 2, 2017
nex3 added a commit that referenced this issue Jun 16, 2017
@nex3 nex3 closed this as completed Jun 16, 2017
jhawthorn added a commit to jhawthorn/solidus that referenced this issue Jul 11, 2017
The ability to extend compound selectors has been deprecated and will be
removed from sass.

See sass/sass#1599 for details.
@ArmorDarks
Copy link

If an element matches .a.b, that means it also matches both .a and .b individually, so .c {@extend .a.b} should mean the same thing as .c {@extend .a; @extend .b}.

I still miss the logic why .a.b. also matches .a and .b individually. Those are 3 different selectors, it just so happens that they consist from same elements, but nothing more.

It just goes against CSS logic, since when in CSS we write more complex selectors, we increasing its specificity on purpose, to ensure that only "those instances of class" with class='a b' will receive that style, not class='a' and class='b'.

I think Sass can follow pretty much close same logic — when you increase specificity of extend, you want to extend only specific selectors, not everything related to them, otherwise you would write more generic extend.

@meowsus
Copy link

meowsus commented Jul 14, 2017

@ArmorDarks that's the behavior I would expect. @extend should extend the selector that is passed to it. Anything more would risk yielding unexpected results, not to mention further tarnish it's already eroded reputation.

@mdesantis
Copy link

-1 to this. If I want .c to extend .a and .b I write .c { @extend .a; @extend .b; }.

@jdurand
Copy link

jdurand commented Jul 26, 2017

I'm receiving deprecation warnings linking to this issue for several bits of SCSS that look like this:

.icon-check:before { content: "\f13e"; }

.foo {
  // [...]
  &:after {
    // [...]
    @extend .icon-check:before;
  }
}

This SCSS should probably be rewritten, but that's not the point; I don't think it's semantically wrong.
Why is it triggering this warning?

@combs
Copy link

combs commented May 8, 2019

Sorry. I meant to point out that the deprecation warning cites a dead URL: See http://bit.ly/ExtendCompound for details.

@nex3
Copy link
Contributor Author

nex3 commented May 8, 2019

Thank you for the report. It looks like the JavaScript we set up to redirect anchors in the new documentation isn't working. I'll look into it.

@esr360
Copy link

esr360 commented May 23, 2019

@nex3 please look at this simplified example that uses a compound selector and suggest the correct way I should be doing it:

https://codepen.io/esr360/pen/zQRZdY

The same code on SassMesiter throws an error, and the "suggestion" from the error throws another error...not a particularly good developer experience.

@nex3
Copy link
Contributor Author

nex3 commented May 24, 2019

@esr360 I would change @extend [class*="button-"][class*="-round"] to @extend [class*="button-"], [class*="-round"], which produces the same output and accurately represents the idea that .myButton is a button and is round. This works exactly the same as if you had written <div class="button-round myButton"> in your HTML instead of writing the @extend.

It's also worth noting that the comments on your styles are contradictory. You say that all buttons should be styled with the .button styles, but then you say that .myButton should only extend the round button styles. Is it a button or isn't it? This kind of semantic confusion is exactly the problem with extending compound selectors.

@esr360
Copy link

esr360 commented May 26, 2019

@nex3 I really appreciate your response.

Actually you can see that whilst in this particular case the net effect is the same, the CSS output is in fact different:

.button, [class*="button-"], .myButton {
  display: block;
  background: red;
}

[class*="button-"][class*="-round"], .myButton {
  border-radius: 4px;
}

.myButton {
  display: inline;
  background: blue;
}

...vs the original:

.button, [class*="button-"] {
  display: block;
  background: red;
}

[class*="button-"][class*="-round"], .myButton {
  border-radius: 4px;
}

.myButton {
  display: inline;
  background: blue;
}

The difference being that myButton in the original case does not extend the .button styles. The display property in the updated suggestion (https://www.sassmeister.com/gist/2dbeb5ed3178a47d3de0319050776167) will now be overwritten. If .button were to contain any properties that .myButton did not, .myButton would incorrectly extend these properties as well, but in reality we just want to extend the border-radius property.

I take your point on board about semantics, the example I provided doesn't do a good job at showing the problem in a practical sense, only a logical one, so please consider the same question to this revised example:

https://codepen.io/esr360/pen/zQRZdY

Can you suggest a correct way to achieve the above?

@binki
Copy link

binki commented May 27, 2019

@esr360 Using the placeholder selector technique I described in an earlier comment, you can get identical output. I have forked your codepen here: https://codepen.io/apostrophe/pen/gJKBbm .

I tried to determine if this pattern would be compatible with your code base. You appear to be using pattern matching to incrementally accumulate rules onto an element. However, in defining [class^="button-"][class*="-primary"] , your use of @extend created a new rule set in a way that didn’t participate in that pattern-matching-based rule accumulation. Thus, I don’t think the use of placeholders is a step backward for the example you provided.

@esr360
Copy link

esr360 commented May 28, 2019

You appear to be using pattern matching to incrementally accumulate rules onto an element.

@binki thanks for much for actually understanding what it is I'm trying to do - this is exactly right.

Your solution using placeholders seems like it could work, though it will require my framework to be re-written, and will still feel like a "hack" to get around this change, which I'm still struggling to see the logic of.

@nex3
Copy link
Contributor Author

nex3 commented May 30, 2019

I take your point on board about semantics, the example I provided doesn't do a good job at showing the problem in a practical sense, only a logical one, so please consider the same question to this revised example:

https://codepen.io/esr360/pen/zQRZdY

Can you suggest a correct way to achieve the above?

This one's actually easier: just get rid of [class*="button-"] in your extends. Because the extending selector already includes [class*="button-"], Sass's intelligent unification will avoid duplicating that selector. See my forked pen to see it in action.

@esr360
Copy link

esr360 commented May 30, 2019

@nex3 that's very interesting! At first glance, it seemed like the code would break if I introduced some other style that had [class*="-round"] (e.g. [class*="icon-"][class*="-round"]), since all [class*="-round"] cases would be extended, and whilst it generated the following CSS:

[class*="icon-"][class*="-round"], 
[class*="icon-"][class*="button-"][class*="-primary"] {
  border-radius: 50%;
}

it shouldn't break anything. Ideally it wouldn't be in my output because I'm really just wanting to extend [class*="-round"] for buttons only. In my framework, any component that has round modifiers will extend button into the selector, but it won't break anything I don't think so I suppose this is acceptable.

Thanks very much for putting time in to help me.

@nex3
Copy link
Contributor Author

nex3 commented May 31, 2019

In theory, you could have an element with class="icon-button-primary" that should have that border-radius. You could rewrite your selectors to be [class^="icon-"] and [class^="button-"], in which case we could potentially detect that they're mutually incompatible during intelligent unification (currently we don't have that logic but it wouldn't be too hard to add).

@denholmscrimshaw-se
Copy link

@nex3 Hi, I was wondering if you could clarify something for me, as I'm trying to resolve these deprecation warnings.

You can use compound selectors to define new rules that are present in neither of the composing selectors individually, like in this CodePen where .popover is combined with .top https://codepen.io/denholms/pen/MWYavzm.

You say "If an element matches .a.b, that means it also matches both .a and .b individually", but aren't you describing ".a .b", not ".a.b" where the classes are used simultaneously?

@lwxbr
Copy link

lwxbr commented Dec 10, 2019

Please, @nex3, just create a flag ignoring @extend strict rules and let us compile grouped selectors. For example:

$ sass --ignore-extend-rules <args>

Okay, If that breaks the rules of 'extend' and it can be unbearable to do, lets create another keyword to fit the a.b cases.

@nex3
Copy link
Contributor Author

nex3 commented Dec 17, 2019

@dscrimshaw

@nex3 Hi, I was wondering if you could clarify something for me, as I'm trying to resolve these deprecation warnings.

You can use compound selectors to define new rules that are present in neither of the composing selectors individually, like in this CodePen where .popover is combined with .top https://codepen.io/denholms/pen/MWYavzm.

You say "If an element matches .a.b, that means it also matches both .a and .b individually", but aren't you describing ".a .b", not ".a.b" where the classes are used simultaneously?

If an element matches .a .b, that means the element matches .b and it has a parent that matches .a. If an element matches .a.b, that means it matches both .a and .b individually. For example, in this CodePen:

  • The p element matches .border.color (you can tell because it has a red background).
  • The p element matches .border (you can tell because it has a black border).
  • The p element matches .color (you can tell because the text is blue).

@lwxbr We don't add flags that affect compilation behavior for many reasons. It adds complexity for every user, it increases our maintenance overhead, and worst of all it means that Sass stylesheets compile to meaningfully different CSS in different contexts.

Also, we don't consider the ability to extend compound selectors to be desirable behavior for anyone. I understand why people are using it as a convenient shorthand for manually writing out the selectors they need, but that shorthand almost universally produces more confusion for future readers of those stylesheets than it saves in the short term. It's not something we want to encourage.

@denholmscrimshaw-se
Copy link

@nex3 Thanks for the clarification.

If you had the intent to extend the rules of .border.color though, for instance (and sorry if this is a poor example - it's the end of my working day) if you're using border as a styling class and color as representing a state, and you're extending these rules on a main page to something that's now in a modal window or something, as far as I understand you now can't? Seems like you have to define a new class for that styling+state scenario to then extend?

@nex3
Copy link
Contributor Author

nex3 commented Dec 18, 2019

Can you give a more concrete example?

@lwxbr
Copy link

lwxbr commented Jan 22, 2020

Also, we don't consider the ability to extend compound selectors to be desirable behavior for anyone.

@nex3, this issue is definetely a wontfix issue, I suggest you tag it as it really is.

I think the fair solution for this case is let the users solve this by themselves. For example: I don't will implement that feature in the core of the sass, but you can write a plugin if you want and distribute it to others if that might help them instead of fork sass and make another sass compilers, etc, etc.

But saying like "that is it and period" will keep this issue and others in this state of unsolvable problems.

garethjmsaunders added a commit to garethjmsaunders/digital-pattern-library that referenced this issue Sep 28, 2020
Resolve warning about Sass @extend a compound selector is deprecated sass/sass#1599 - remove the i element?
@maxjf1
Copy link

maxjf1 commented Jan 22, 2021

Currently, when a compound selector is extended, Sass will only replace instances of the full extendee with the extender. For example:

.a {x: y}
.b {x: y}
.a.b {x: y}

.c {@extend .a.b}

produces

.a {x: y}
.b {x: y}
.a.b, .c {x: y}

when it should produce

.a, .c {x: y}
.b, .c {x: y}
.a.b, .c {x: y}

This is one of the reasons i stopped using sass. This feature was the best one of the tool. And just because someone didn't like the way it was implemented, it was removed to everyone (and nowdays is almost impossible to use it). I used a lot this feature @extend .a.b to integrate with old layouts and extend styles. Today, if you didn't apply an strict pattern such as BEM, you are scrolled.

You coud just achive it in this example by just using:

.a {x: y}
.b {x: y}
.a.b {x: y}

.c {@extend .a, .b}

but,

NO

everyone need to loose this feature.

How do i supose to fix this case:

// base
.foo {
    .bar {
        .button {
            background: red;
            color: white;
        }
    }
}

// extending
.my-link {
    @extend .foo .button;
    border: 1px solid yellow;
}

whithout changing the base code? it's impossible. Thank you 👌

@maxjf1
Copy link

maxjf1 commented Jan 22, 2021

but that shorthand almost universally produces more confusion for future readers of those stylesheets than it saves in the short term. It's not something we want to encourage.

@nex3 you are not encouraging, you are literally FORBIDDING anyone to use this feature. As a developer, i like to make choices about my project and decide myself if something is or isn't suitable or right to do, and not let someone else decide for me. If it was really an recommendation, it would only generate an warning, not an error.

This is a useful feature and not just an good practice. There is a lot of projects that may take advantage of this, like

  • Extending another project / theme style
  • Supporting an legacy project style
  • Extend/modify behaviors when you are not allowed to change the base code (using an elements library such bootstrap for instance)
  • Extend/modify generated CSS/SCSS without changing the source code (eg an generated css code from webflow that may be generated again)

If still isn't "right" to use it in @extend, just please create a way to do so. As @lwxbr , an flag or even an plugin to sass. Or, create another tag such as @inject or somehting like it.

This behavior is only usefull when you start an scss project from scratch, and using an strict pattern like BEM. But when you extend another layout, or start from an base such as bootstrap, this is only an bad limitation

jiz4oh pushed a commit to castlery/solidus that referenced this issue Feb 9, 2022
The ability to extend compound selectors has been deprecated and will be
removed from sass.

See sass/sass#1599 for details.
@connorlufei
Copy link

connorlufei commented Jul 12, 2022

Replacing @extend a.b with @extend a, b might be semantically identical but it produce a bloated output in my case. I have a sass library that customizes bootstrap.

For example, I have a rule that is like

.navbar-nav .active .nav-link {
   @extend .nav-link.active; 
}

Which is meant to make selector .navbar-nav .active .nav-link extend the styles from selector .nav-link.active(very few lines of styles). output css has around 19k lines.

But if I use @extend .nav-link, .active; or @extend .active; , the output has 250k lines of css. Since .active and its combination selectors has a lot of styles, output contains a lot of styles rules that is not expected to exist.

Friendly-users added a commit to Friendly-users/sass that referenced this issue Jun 28, 2024
-----
It is inappropriate to include political and offensive content in public code repositories.

Public code repositories should be neutral spaces for collaboration and community, free from personal or political views that could alienate or discriminate against others. Political content, especially that which targets or disparages minority groups, can be harmful and divisive. It can make people feel unwelcome and unsafe, and it can create a hostile work environment.

Please refrain from adding such content to public code repositories.
---

sass#1000 sass#1001 sass#1002 sass#1003 sass#1004 sass#1005 sass#1006 sass#1007 sass#1008 sass#1009 sass#1010 sass#1011 sass#1012 sass#1013 sass#1014 sass#1015 sass#1016 sass#1017 sass#1018 sass#1019 sass#1020 sass#1021 sass#1022 sass#1023 sass#1024 sass#1025 sass#1026 sass#1027 sass#1028 sass#1029 sass#1030 sass#1031 sass#1032 sass#1033 sass#1034 sass#1035 sass#1036 sass#1037 sass#1038 sass#1039 sass#1040 sass#1041 sass#1042 sass#1043 sass#1044 sass#1045 sass#1046 sass#1047 sass#1048 sass#1049 sass#1050 sass#1051 sass#1052 sass#1053 sass#1054 sass#1055 sass#1056 sass#1057 sass#1058 sass#1059 sass#1060 sass#1061 sass#1062 sass#1063 sass#1064 sass#1065 sass#1066 sass#1067 sass#1068 sass#1069 sass#1070 sass#1071 sass#1072 sass#1073 sass#1074 sass#1075 sass#1076 sass#1077 sass#1078 sass#1079 sass#1080 sass#1081 sass#1082 sass#1083 sass#1084 sass#1085 sass#1086 sass#1087 sass#1088 sass#1089 sass#1090 sass#1091 sass#1092 sass#1093 sass#1094 sass#1095 sass#1096 sass#1097 sass#1098 sass#1099 sass#1100 sass#1101 sass#1102 sass#1103 sass#1104 sass#1105 sass#1106 sass#1107 sass#1108 sass#1109 sass#1110 sass#1111 sass#1112 sass#1113 sass#1114 sass#1115 sass#1116 sass#1117 sass#1118 sass#1119 sass#1120 sass#1121 sass#1122 sass#1123 sass#1124 sass#1125 sass#1126 sass#1127 sass#1128 sass#1129 sass#1130 sass#1131 sass#1132 sass#1133 sass#1134 sass#1135 sass#1136 sass#1137 sass#1138 sass#1139 sass#1140 sass#1141 sass#1142 sass#1143 sass#1144 sass#1145 sass#1146 sass#1147 sass#1148 sass#1149 sass#1150 sass#1151 sass#1152 sass#1153 sass#1154 sass#1155 sass#1156 sass#1157 sass#1158 sass#1159 sass#1160 sass#1161 sass#1162 sass#1163 sass#1164 sass#1165 sass#1166 sass#1167 sass#1168 sass#1169 sass#1170 sass#1171 sass#1172 sass#1173 sass#1174 sass#1175 sass#1176 sass#1177 sass#1178 sass#1179 sass#1180 sass#1181 sass#1182 sass#1183 sass#1184 sass#1185 sass#1186 sass#1187 sass#1188 sass#1189 sass#1190 sass#1191 sass#1192 sass#1193 sass#1194 sass#1195 sass#1196 sass#1197 sass#1198 sass#1199 sass#1200 sass#1201 sass#1202 sass#1203 sass#1204 sass#1205 sass#1206 sass#1207 sass#1208 sass#1209 sass#1210 sass#1211 sass#1212 sass#1213 sass#1214 sass#1215 sass#1216 sass#1217 sass#1218 sass#1219 sass#1220 sass#1221 sass#1222 sass#1223 sass#1224 sass#1225 sass#1226 sass#1227 sass#1228 sass#1229 sass#1230 sass#1231 sass#1232 sass#1233 sass#1234 sass#1235 sass#1236 sass#1237 sass#1238 sass#1239 sass#1240 sass#1241 sass#1242 sass#1243 sass#1244 sass#1245 sass#1246 sass#1247 sass#1248 sass#1249 sass#1250 sass#1251 sass#1252 sass#1253 sass#1254 sass#1255 sass#1256 sass#1257 sass#1258 sass#1259 sass#1260 sass#1261 sass#1262 sass#1263 sass#1264 sass#1265 sass#1266 sass#1267 sass#1268 sass#1269 sass#1270 sass#1271 sass#1272 sass#1273 sass#1274 sass#1275 sass#1276 sass#1277 sass#1278 sass#1279 sass#1280 sass#1281 sass#1282 sass#1283 sass#1284 sass#1285 sass#1286 sass#1287 sass#1288 sass#1289 sass#1290 sass#1291 sass#1292 sass#1293 sass#1294 sass#1295 sass#1296 sass#1297 sass#1298 sass#1299 sass#1300 sass#1301 sass#1302 sass#1303 sass#1304 sass#1305 sass#1306 sass#1307 sass#1308 sass#1309 sass#1310 sass#1311 sass#1312 sass#1313 sass#1314 sass#1315 sass#1316 sass#1317 sass#1318 sass#1319 sass#1320 sass#1321 sass#1322 sass#1323 sass#1324 sass#1325 sass#1326 sass#1327 sass#1328 sass#1329 sass#1330 sass#1331 sass#1332 sass#1333 sass#1334 sass#1335 sass#1336 sass#1337 sass#1338 sass#1339 sass#1340 sass#1341 sass#1342 sass#1343 sass#1344 sass#1345 sass#1346 sass#1347 sass#1348 sass#1349 sass#1350 sass#1351 sass#1352 sass#1353 sass#1354 sass#1355 sass#1356 sass#1357 sass#1358 sass#1359 sass#1360 sass#1361 sass#1362 sass#1363 sass#1364 sass#1365 sass#1366 sass#1367 sass#1368 sass#1369 sass#1370 sass#1371 sass#1372 sass#1373 sass#1374 sass#1375 sass#1376 sass#1377 sass#1378 sass#1379 sass#1380 sass#1381 sass#1382 sass#1383 sass#1384 sass#1385 sass#1386 sass#1387 sass#1388 sass#1389 sass#1390 sass#1391 sass#1392 sass#1393 sass#1394 sass#1395 sass#1396 sass#1397 sass#1398 sass#1399 sass#1400 sass#1401 sass#1402 sass#1403 sass#1404 sass#1405 sass#1406 sass#1407 sass#1408 sass#1409 sass#1410 sass#1411 sass#1412 sass#1413 sass#1414 sass#1415 sass#1416 sass#1417 sass#1418 sass#1419 sass#1420 sass#1421 sass#1422 sass#1423 sass#1424 sass#1425 sass#1426 sass#1427 sass#1428 sass#1429 sass#1430 sass#1431 sass#1432 sass#1433 sass#1434 sass#1435 sass#1436 sass#1437 sass#1438 sass#1439 sass#1440 sass#1441 sass#1442 sass#1443 sass#1444 sass#1445 sass#1446 sass#1447 sass#1448 sass#1449 sass#1450 sass#1451 sass#1452 sass#1453 sass#1454 sass#1455 sass#1456 sass#1457 sass#1458 sass#1459 sass#1460 sass#1461 sass#1462 sass#1463 sass#1464 sass#1465 sass#1466 sass#1467 sass#1468 sass#1469 sass#1470 sass#1471 sass#1472 sass#1473 sass#1474 sass#1475 sass#1476 sass#1477 sass#1478 sass#1479 sass#1480 sass#1481 sass#1482 sass#1483 sass#1484 sass#1485 sass#1486 sass#1487 sass#1488 sass#1489 sass#1490 sass#1491 sass#1492 sass#1493 sass#1494 sass#1495 sass#1496 sass#1497 sass#1498 sass#1499 sass#1500 sass#1501 sass#1502 sass#1503 sass#1504 sass#1505 sass#1506 sass#1507 sass#1508 sass#1509 sass#1510 sass#1511 sass#1512 sass#1513 sass#1514 sass#1515 sass#1516 sass#1517 sass#1518 sass#1519 sass#1520 sass#1521 sass#1522 sass#1523 sass#1524 sass#1525 sass#1526 sass#1527 sass#1528 sass#1529 sass#1530 sass#1531 sass#1532 sass#1533 sass#1534 sass#1535 sass#1536 sass#1537 sass#1538 sass#1539 sass#1540 sass#1541 sass#1542 sass#1543 sass#1544 sass#1545 sass#1546 sass#1547 sass#1548 sass#1549 sass#1550 sass#1551 sass#1552 sass#1553 sass#1554 sass#1555 sass#1556 sass#1557 sass#1558 sass#1559 sass#1560 sass#1561 sass#1562 sass#1563 sass#1564 sass#1565 sass#1566 sass#1567 sass#1568 sass#1569 sass#1570 sass#1571 sass#1572 sass#1573 sass#1574 sass#1575 sass#1576 sass#1577 sass#1578 sass#1579 sass#1580 sass#1581 sass#1582 sass#1583 sass#1584 sass#1585 sass#1586 sass#1587 sass#1588 sass#1589 sass#1590 sass#1591 sass#1592 sass#1593 sass#1594 sass#1595 sass#1596 sass#1597 sass#1598 sass#1599 sass#1600 sass#1601 sass#1602 sass#1603 sass#1604 sass#1605 sass#1606 sass#1607 sass#1608 sass#1609 sass#1610 sass#1611 sass#1612 sass#1613 sass#1614 sass#1615 sass#1616 sass#1617 sass#1618 sass#1619 sass#1620 sass#1621 sass#1622 sass#1623 sass#1624 sass#1625 sass#1626 sass#1627 sass#1628 sass#1629 sass#1630 sass#1631 sass#1632 sass#1633 sass#1634 sass#1635 sass#1636 sass#1637 sass#1638 sass#1639 sass#1640 sass#1641 sass#1642 sass#1643 sass#1644 sass#1645 sass#1646 sass#1647 sass#1648 sass#1649 sass#1650 sass#1651 sass#1652 sass#1653 sass#1654 sass#1655 sass#1656 sass#1657 sass#1658 sass#1659 sass#1660 sass#1661 sass#1662 sass#1663 sass#1664 sass#1665 sass#1666 sass#1667 sass#1668 sass#1669 sass#1670 sass#1671 sass#1672 sass#1673 sass#1674 sass#1675 sass#1676 sass#1677 sass#1678 sass#1679 sass#1680 sass#1681 sass#1682 sass#1683 sass#1684 sass#1685 sass#1686 sass#1687 sass#1688 sass#1689 sass#1690 sass#1691 sass#1692 sass#1693 sass#1694 sass#1695 sass#1696 sass#1697 sass#1698 sass#1699 sass#1700 sass#1701 sass#1702 sass#1703 sass#1704 sass#1705 sass#1706 sass#1707 sass#1708 sass#1709 sass#1710 sass#1711 sass#1712 sass#1713 sass#1714 sass#1715 sass#1716 sass#1717 sass#1718 sass#1719 sass#1720 sass#1721 sass#1722 sass#1723 sass#1724 sass#1725 sass#1726 sass#1727 sass#1728 sass#1729 sass#1730 sass#1731 sass#1732 sass#1733 sass#1734 sass#1735 sass#1736 sass#1737 sass#1738 sass#1739 sass#1740 sass#1741 sass#1742 sass#1743 sass#1744 sass#1745 sass#1746 sass#1747 sass#1748 sass#1749 sass#1750 sass#1751 sass#1752 sass#1753 sass#1754 sass#1755 sass#1756 sass#1757 sass#1758 sass#1759 sass#1760 sass#1761 sass#1762 sass#1763 sass#1764 sass#1765 sass#1766 sass#1767 sass#1768 sass#1769 sass#1770 sass#1771 sass#1772 sass#1773 sass#1774 sass#1775 sass#1776 sass#1777 sass#1778 sass#1779 sass#1780 sass#1781 sass#1782 sass#1783 sass#1784 sass#1785 sass#1786 sass#1787 sass#1788 sass#1789 sass#1790 sass#1791 sass#1792 sass#1793 sass#1794 sass#1795 sass#1796 sass#1797 sass#1798 sass#1799 sass#1800 sass#1801 sass#1802 sass#1803 sass#1804 sass#1805 sass#1806 sass#1807 sass#1808 sass#1809 sass#1810 sass#1811 sass#1812 sass#1813 sass#1814 sass#1815 sass#1816 sass#1817 sass#1818 sass#1819 sass#1820 sass#1821 sass#1822 sass#1823 sass#1824 sass#1825 sass#1826 sass#1827 sass#1828 sass#1829 sass#1830 sass#1831 sass#1832 sass#1833 sass#1834 sass#1835 sass#1836 sass#1837 sass#1838 sass#1839 sass#1840 sass#1841 sass#1842 sass#1843 sass#1844 sass#1845 sass#1846 sass#1847 sass#1848 sass#1849 sass#1850 sass#1851 sass#1852 sass#1853 sass#1854 sass#1855 sass#1856 sass#1857 sass#1858 sass#1859 sass#1860 sass#1861 sass#1862 sass#1863 sass#1864 sass#1865 sass#1866 sass#1867 sass#1868 sass#1869 sass#1870 sass#1871 sass#1872 sass#1873 sass#1874 sass#1875 sass#1876 sass#1877 sass#1878 sass#1879 sass#1880 sass#1881 sass#1882 sass#1883 sass#1884 sass#1885 sass#1886 sass#1887 sass#1888 sass#1889 sass#1890 sass#1891 sass#1892 sass#1893 sass#1894 sass#1895 sass#1896 sass#1897 sass#1898 sass#1899 sass#1900 sass#1901 sass#1902 sass#1903 sass#1904 sass#1905 sass#1906 sass#1907 sass#1908 sass#1909 sass#1910 sass#1911 sass#1912 sass#1913 sass#1914 sass#1915 sass#1916 sass#1917 sass#1918 sass#1919 sass#1920 sass#1921 sass#1922 sass#1923 sass#1924 sass#1925 sass#1926 sass#1927 sass#1928 sass#1929 sass#1930 sass#1931 sass#1932 sass#1933 sass#1934 sass#1935 sass#1936 sass#1937 sass#1938 sass#1939 sass#1940 sass#1941 sass#1942 sass#1943 sass#1944 sass#1945 sass#1946 sass#1947 sass#1948 sass#1949 sass#1950 sass#1951 sass#1952 sass#1953 sass#1954 sass#1955 sass#1956 sass#1957 sass#1958 sass#1959 sass#1960 sass#1961 sass#1962 sass#1963 sass#1964 sass#1965 sass#1966 sass#1967 sass#1968 sass#1969 sass#1970 sass#1971 sass#1972 sass#1973 sass#1974 sass#1975 sass#1976 sass#1977 sass#1978 sass#1979 sass#1980 sass#1981 sass#1982 sass#1983 sass#1984 sass#1985 sass#1986 sass#1987 sass#1988 sass#1989 sass#1990 sass#1991 sass#1992 sass#1993 sass#1994 sass#1995 sass#1996 sass#1997 sass#1998 sass#1999
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working CSS compatibility Support the CSS spec requires deprecation Blocked on a deprecation cycle
Projects
None yet
Development

No branches or pull requests