Spesso vogliamo dare uno stile agli elementi che contengono contenuto. Che ne dici di quando un elemento non ha figli o testo? Facile, puoi usare il selettore :empty 🤩
p::before { font-family: 'FontAwesome'; content: 'f240'; }p:empty::before {
content: f244;
}
p {
color: silver;
}
p:empty {
color: red;
}
Cosa è considerato vuoto?
Quando l'ho incontrato per la prima volta, c'era un po' di confusione su ciò che questa proprietà considera vuoto . Rimaniamo con MDN definizione qui:
La pseudo-classe CSS :empty rappresenta qualsiasi elemento che non ha figli. I figli possono essere nodi di elementi o testo (inclusi gli spazi bianchi). I commenti, le istruzioni di elaborazione e il contenuto CSS non influiscono sul fatto che un elemento sia considerato vuoto.
È vuoto
Finché non ci sono spazi bianchi, è un elemento vuoto.
Anche il commento in mezzo è considerato un elemento vuoto. Finché non ci sono spazi bianchi.
Non vuoto
Gli spazi bianchi sono considerati non vuoti. Anche in una nuova riga, c'è uno spazio bianco, quindi non vuoto! Sottolineando questo, perché ho fatto lo stesso errore
come comprare la moneta di maiale?
Anche avere l'elemento figli conta come non vuoto
Spazi bianchi nelle specifiche future
La buona notizia è - in Selettori Livello 4 , gli spazi verrebbero considerati vuoti! Questo lo renderà simile ad agire come :-moz-only-whitespace. In altre parole, questo sarebbe considerato vuoto:
codice del sito di shopping online in html
⚠️ MA, non farlo ancora. Attualmente nessun browser lo supporta.
Esempi che utilizzano :empty
Ok, diamo un'occhiata ad alcuni esempi reali di utilizzo di :empty.
Utilizzo di: vuoto nel messaggio di errore del modulo
Questo è l'esempio che mi ha fatto scoprire per la prima volta :empty. Quindi volevo anteporre un'icona ❌ al mio messaggio di errore. Ma il problema è che l'icona è apparsa anche quando non ho ricevuto alcun messaggio di errore. Ma allora nessun problema, posso semplicemente usare :empty per aggiungere l'icona solo quando c'è un messaggio di errore
CSS
.error:before {
color: red;
content: ' 274c '; /* ❌ icon */
}
HTML
Missing Email
Produzione
Senza Vuoto
❌
❌ Missing Email
Con :vuoto
❌ Missing Email
Utilizzo di :vuoto negli avvisi
Ecco un altro esempio che usa :empty per nascondere lo stato vuoto.
.alert {
background: pink;
padding: 10px;
}
.alert:empty {
display: none;
}
HTML
Alert Message
Produzione
Without empty
Alert Message
With :empty
Alert Message
Supporto browser
Il supporto su questo è in realtà davvero buono. Supporta fino a Internet Explorer 9
Esempi di comunità
Ho scoperto :empty quando stavo cercando di dare uno stile a messaggi di errore vuoti in un modulo. . Non è più necessario JS, posso usare puro CSS
Quali altri casi d'uso conosci?
- @delusioninabox : Una correzione per rimuovere la spaziatura janky dei tag di paragrafo vuoti, generalmente dal contenuto creato dall'utente.
- @hkfoster : L'ho usato per schiacciare un numero qualsiasi di selettori generati casualmente che non riesco a eliminare dal lato dei modelli.
- @sumurai8 : Rimuovere il riempimento dai paragrafi vuoti
- @_ottenga : Bello per il punto di notifica (se vuoto non è visibile, se ha un numero - ad esempio - è rosso con il numero all'interno)
- @stephenjbell : li:vuoto { visibilità:nascosto; } Lascia che un elemento di un elenco vuoto agisca come una sorta di interruzione di paragrafo (nessun punto elenco) nel mezzo di un elenco.
- @jlabs : L'ho usato di recente in ul che mostra un messaggio quando l'ul non ha figli - l'elenco è stato popolato tramite JS.
Ingresso della comunità
- @Portato a te da : Un'altra cosa su :empty non seleziona elementi che contengono spazi bianchi, dall'altra parte abbiamo :blank ma non è ancora ben supportato
- @link2twenty : Adoro vedere funzionalità poco conosciute come questa ottenere alcuni riflettori! Probabilmente vale la pena notare che quando i selettori di livello 4 distribuiscono lo spazio bianco saranno inclusi come vuoti
Grazie per aver letto ❤
Se ti è piaciuto questo post, condividilo con tutti i tuoi amici di programmazione!
barra di carico angolare
Per saperne di più
? Bootcamp per sviluppatori web
? Costruisci siti web reattivi del mondo reale con HTML5 e CSS3
? CSS e Sass avanzati: Flexbox, Grid, Animazioni e altro!
? Web Design per principianti: codifica del mondo reale in HTML e CSS
edificio più alto di vegas
☞ Fondamenti di HTML5 e CSS3: sviluppo per principianti assoluti
? Come creare e inviare un'e-mail HTML 2019
☞ Utilizzo di Web Workers per l'elaborazione in tempo reale
☞ Come creare app desktop con HTML, CSS e Javascript?
☞ 34 libri HTML e CSS gratuiti
☞ Costruire un semplice accorciatore di URL con HTML e Javascript
#css
www.samanthaming.com
CSS: selettore vuoto
CSS: selettore vuoto