Selettori extend e placeholder
Condivida gli stili tra i selettori utilizzando @extend e i selettori placeholder silenziosi.
Selettori extend e placeholder è una lezione CSS Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CSS Academy include 4 lezioni in totale.
@extend in Sass
@extend consente a un selettore di ereditare tutti gli stili di un altro selettore. Invece di duplicare il codice, l'estensione crea un insieme di regole condiviso nel CSS compilato.
<div class="error">Error message</div>
<div class="critical-error">Critical error message</div>
Selettori segnaposto
Un selettore segnaposto, preceduto da %, definisce un blocco di stili che non viene mai compilato autonomamente, ma solo quando viene esteso. Non genera CSS a meno che qualcosa non lo estenda.
<div class="product-card">Product card</div>
<div class="profile-card">Profile card</div>
Perché usare i segnaposto invece delle classi
L'estensione di una classe reale aggiunge al risultato compilato l'intero contesto del selettore di quella classe. I segnaposto sono più puliti: producono selettori raggruppati solo per i selettori che li estendono.
Output compilato di @extend
Quando più selettori estendono lo stesso segnaposto, Sass li raggruppa in una regola separata da virgole:
<div class="product-card">Product card</div>
<div class="profile-card">Profile card</div>
Problemi di @extend
@extend presenta diversi svantaggi importanti:
- Non può essere utilizzato all'interno delle media query
- Può produrre selettori raggruppati imprevisti e molto lunghi quando si verificano catene di estensioni
- Rende più difficile risalire dal CSS compilato ai file sorgente
Compromessi tra @extend e mixin
Confronto:
@extend: CSS più compatto, grazie alle regole condivise, ma catene di selettori complesse e limitazioni nelle media query@mixin: duplica le dichiarazioni, ma è più prevedibile e può essere utilizzato all'interno delle media query
Di solito il mixin è preferibile
Nella pratica moderna di Sass, in genere si preferiscono i mixin a @extend. HTTP/2 e la compressione gzip rendono meno importante la duplicazione delle dichiarazioni, mentre la facilità di debug dei mixin compensa ampiamente la minima differenza nelle dimensioni del CSS.
Quando @extend è appropriato
@extend, insieme ai segnaposto, è appropriato quando:
- Più selettori condividono realmente lo stesso stato semantico, ad esempio gli stati di errore
- Non ci si trova all'interno di una media query
- Gli stili di base sono stabili e ben definiti
Segnaposto e tematizzazione
I segnaposto sono adatti agli insiemi di utility simili a un reset, ereditati da più componenti:
<a href="#" class="skip-link">Skip to content</a>
<span class="sr-label">Screen reader label</span>
Considerazioni sulla deprecazione
Alcune guide di stile e alcuni team vietano completamente @extend a causa della sua complessità e dell'eccessivo numero di selettori che può generare. Valuti i compromessi e segua le convenzioni del team.
Verifica rapida
Qual è la differenza tra l'estensione di una classe normale e l'estensione di un selettore segnaposto, indicato con %?
Riepilogo
@extend consente a un selettore di ereditare gli stili di un altro, raggruppando i selettori nel CSS compilato. I segnaposto, come %name, non generano codice compilato finché non vengono estesi e sono più puliti rispetto all'estensione di classi reali. Eviti @extend all'interno delle media query. Nel Sass moderno, in genere si preferiscono i mixin a @extend perché sono più prevedibili e più facili da sottoporre a debug.
Domande Frequenti
La lezione «Selettori extend e placeholder» è gratuita?
Sì — il testo completo di «Selettori extend e placeholder» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CSS Academy, passa a CoddyKit PRO. Il corso CSS Academy include 4 lezioni in totale.
Cosa imparerò in «Selettori extend e placeholder»?
Condivida gli stili tra i selettori utilizzando @extend e i selettori placeholder silenziosi. Eserciti CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CSS Academy?
Non è richiesta alcuna esperienza precedente. CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Selettori extend e placeholder»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CSS Academy?
Sì. Ogni lezione CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Variabili, nesting e partial
- Mixin e inclusioni
- Selettori extend e placeholder
- Funzioni e flusso di controllo Sass