La semplice risposta è: non puoi perché Sass non può (o non vuole) comporre il selettore per esso. Non puoi essere all'interno di una media query ed estendere qualcosa che è al di fuori di una media query. Sarebbe certamente bello se ne prendesse semplicemente una copia invece di provare a comporre i selettori. Ma non è così non puoi.
Usa un mixin
Se hai un caso in cui riutilizzerai un blocco di codice all'interno e all'esterno delle media query e desideri comunque che sia in grado di estenderlo, scrivi sia una classe mixin che una classe di estensione:
@mixin foo {
}
%foo {
@include foo;
}
.foo {
@extend %foo;
}
@media (min-width: 30em) {
.bar {
@include foo;
}
}
Estendi il selettore dall'esterno all'interno di una media query
Questo non aiuterà molto il tuo caso d'uso, ma è un'altra opzione:
%foo {
@media (min-width: 20em) {
color: red;
}
}
@media (min-width: 30em) {
%bar {
background: yellow;
}
}
.foo {
@extend %foo;
}
.bar {
@extend %bar;
}
Attendi fino a quando Sass non solleva questa restrizione (o correggila tu stesso)
Sono in corso numerose discussioni riguardo a questo problema (per favore non contribuire a questi thread a meno che tu non abbia qualcosa di significativo da aggiungere: i manutentori sono già consapevoli che gli utenti desiderano questa funzionalità, è solo una questione di come implementarla e di cosa la sintassi dovrebbe essere).