CSS: selettore vuoto

Blog

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!

Seguimi su Facebook | Twitter

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