2014-09-25 13 views
5

Html:CSS :: prima è annullando :: first-letter codice

<h1>Example title</h1> 

CSS:

h1::first-letter{ 
    display:none; 
} 
h1::before{ 
    content: url(http://icons.iconarchive.com/icons/ariil/alphabet/32/Letter-E-icon.png); 
} 

La mia domanda è: perché è :: prima sta uccidendo :: regola first-letter ? Che cosa sta succedendo qui? Se :: before is removed, :: first-letter funziona bene.

Esiste un'alternativa alla destinazione della prima lettera in questo esempio senza modificare l'html?

http://jsfiddle.net/Borachio/kvaxmhth/

+1

https://developer.mozilla.org/en-US/docs/Web/CSS/::first-letter – disinfor

risposta

5

Da the spec:

Dopo il dominio p::before {content: "Note: "}, il selettore p::first-letter matches the "N" of "Note".

Si noti inoltre che la proprietà display non è valida su :first-letter e :first-line elementi pseudo. Ancora una volta, dalle specifiche:

Una versione futura di questa specifica può consentire a questo pseudoelemento di applicare a più tipi di visualizzazione.

Questo è il comportamento previsto.

Soluzione:

HTML:

<div><h1>Example title</h1></div> 

e CSS:

h1{ 
    display: inline-block; 
} 
h1::first-letter{ 
    font-size: 0px; 
} 
div::before{ 
    content: url(http://icons.iconarchive.com/icons/ariil/alphabet/32/Letter-E-icon.png); 
} 

Demo: http://jsfiddle.net/kvaxmhth/3/

+0

Quindi, perché si sta visualizzando l'immagine? Il display: nessuno dovrebbe essere applicato all'immagine in questa logica? – Maigret

+2

L'immagine è un'immagine, non una lettera. – Mooseman

-1

Non sta uccidendo, il :: first-letter non ha il visualizza la dichiarazione.

Maggiori informazioni: http://www.w3schools.com/cssref/sel_firstletter.asp

+1

Sembra funzionare con Visibility: nascosto; anche se. http://jsfiddle.net/Lukedturnbull/kvaxmhth/1/ –

+0

Qui non ha funzionato. –

+1

@LukeTurnbull 'visibility' non funziona in Firefox v32. Che browser funziona? – disinfor