2010-07-23 10 views
8

Una dimostrazione del problema è qui.Perché Chrome interrompe il testo nel layout multi-colonna CSS3?

http://www.vcn.bc.ca/~dugan/css3/newhtml.html

I più colonne di layout CSS3 visualizzata correttamente in Firefox. Opera e IE8 lo visualizzano come una colonna (che va bene). Chrome, tuttavia, tenta di visualizzarlo come più colonne e interrompe parte del testo.

C'è un modo per farlo funzionare con Chrome?

+0

Interruzioni in Safari anche su Windows (allo stesso modo). –

+0

Potrebbe trattarsi di un problema di carattere Web? Ho visto altri strani comportamenti per i caratteri Chrome + Web, che sembrano correlati a come cromo calcola le altezze delle linee ecc. – claesv

risposta

2

Sembra mostrare tutto il testo se si imposta un'altezza di riga di 1,5 sulla regola p in dugan.css. Sembra che ci sia ancora un difetto nel modo esatto in cui Chrome equilibra le colonne, potrebbe essere necessario inserire un paragrafo vuoto o aggiungere del padding sull'ultimo paragrafo o qualcosa del genere.

19

La regolazione dell'altezza della linea (o della dimensione del carattere, come consigliato altrove) potrebbe rimuovere il bug di clipping di Chrome, ma solo accidentalmente. Se si vuole evitare a livello di codice, l'unica soluzione di lavoro per ora è:

.multicolumn p { 
    display: inline-block; 
} 

si potrebbe espandere questa a tutti gli elementi figlio del contenitore più colonne, ma probabilmente sarà necessario aggiungere width: 100%; ad un certo punto. Per maggiori informazioni, leggi la discussione allo http://www.symphonious.net/2010/12/30/controlling-wrapping-in-css3-columns/ e http://zomigi.com/blog/deal-breaker-problems-with-css3-multi-columns/.

Inoltre, se la soluzione alternativa al blocco in linea non è di aiuto, la causa per il taglio dei bit di testo può consistere in un'applicazione ricorsiva di progettazione a più colonne. L'ho osservato in uno scenario più complesso rispetto a quello in cui un genitore remoto di un contenitore di testo a più colonne aveva il proprio layout di colonna. La rimozione del conteggio di colonne dal contenitore di livello superiore ha risolto i problemi di interruzione di colonna.

+0

Questa dovrebbe essere la risposta corretta. – biko

+0

Questa è la migliore risposta a questo problema. – zgood

+0

Questo ha funzionato per me! L'interruzione di colonna non l'ha fatto. –

6
body{ 
    -webkit-column-break-inside:avoid; 
} 
+0

Questo ha risolto il problema per me. – maurice

+0

Questo è l'approccio corretto. – undefined

1

In alcune situazioni, ho visto padding e margini nel contenuto di colonne causano questo problema. Prova:

.columnized-content { margin: 0; padding: 0; } 
+0

Inoltre, puoi provare {ridimensionamento della casella: border-box;} se desideri mantenere il riempimento –

Problemi correlati