2012-06-07 18 views
69

È possibile in puro css, cioè senza aggiungere ulteriori tag html, per creare un'interruzione di riga come <br>? Voglio che l'interruzione di riga dopo l'elemento <h4>, ma non prima:Interruzione di riga (come <br>) utilizzando solo css

HTML

<li> 
    Text, text, text, text, text. <h4>Sub header</h4> 
    Text, text, text, text, text. 
</li> 

CSS

h4 { 
    display: inline; 
} 

ho trovato molte domande di questo tipo, ma sempre con risposte come "uso blocco di visualizzazione;", che non posso fare, quando lo <h4> deve rimanere sulla stessa linea.

+0

Perché questo elemento un h4? Perché lo usi in un posto come questo? – toniedzwiedz

+0

La nostra curiosità, qual è la ragione per cui non vuoi usare
? –

+1

Il motivo: ho un sacco di elementi della lista. E mi stavo anche chiedendo se esiste una soluzione elegante. Di solito non è bello usare i tag br tra gli elementi (e vedo l'intestazione come un elemento a sé stante) – Steeven

risposta

111

Funziona così:

h4 { 
    display:inline; 
} 
h4:after { 
    content:"\a"; 
    white-space: pre; 
} 

Esempio: http://jsfiddle.net/Bb2d7/

Il trucco viene da qui: https://stackoverflow.com/a/66000/509752 (per avere maggiori spiegazioni)

+1

Bello. Cosa fa \? – Steeven

+6

'\ a' significa interruzione di riga, carattere U + 000A e' spazio bianco: pre' indica ai browser di trattarlo come un'interruzione di riga nel rendering. –

+0

Ok, grazie @ JukkaK.Korpela. Allora perché non è reso come un'interruzione di linea in primo luogo? Sebbene questa soluzione sia semplice, continuerà comunque a sostituire altri comandi di spazio bianco. – Steeven

2

Prova

h4{ display:block;} 

nel CSS

http://jsfiddle.net/ZrJP6/

+1

più un uso giudizioso di "margin-bottom" dovrebbe portarti lì. –

+3

Ma se ho capito bene, l'h4 deve essere sulla stessa riga del testo precedente. Con display: block, c'è una interruzione di linea prima della h4. – adriantoine

+0

Cosa? 'margin-bottom' metterà h4 alla stessa riga del testo precedente? – Steeven

2

È possibile utilizzare ::after per creare un blocco -altezza 0px dopo la <h4>, che si muove in modo efficace qualsiasi cosa dopo la <h4> alla riga successiva :

h4 { 
 
    display: inline; 
 
} 
 
h4::after { 
 
    content: ""; 
 
    display: block; 
 
}
<ul> 
 
    <li> 
 
    Text, text, text, text, text. <h4>Sub header</h4> 
 
    Text, text, text, text, text. 
 
    </li> 
 
</ul>

Problemi correlati