2013-06-07 17 views
29

Sto refactoring un vecchio sito e quel labirinto è pieno di tabelle. Ci trasferiremo in HTML5 e ho bisogno di fissare un tavolo pieno di codicehtml5 equivalente a align = "center" nel TD della tabella

<td align="center"> 

. Ho trovato una soluzione parziale creando una classe

.centered { 
    text-align: center; 
} 

e assegnando ad ogni TD contenente testo.
Ma questo non funziona su immagini e altri elementi.

margin: auto; 

non funziona.
Qual è il modo più veloce per centrare TUTTI i contenuti all'interno di un TD?

+0

width: 50%; margine: 0 auto; quello dovrebbe concentrare tutto il contenuto in un div. –

+10

Se stai rielaborando il tuo sito "spostandoti su HTML5", forse dovresti abbandonare i _table layouts_ anche mentre ci sei ... – CBroe

+1

puoi mostrarci in un jsFiddle dove "non funziona"? – SpYk3HH

risposta

33

Se sono elementi a livello di blocco, non saranno interessati da text-align: center;. Qualcuno potrebbe aver impostato img { display: block; } e questo lo sta buttando fuori di testa. Si può provare:

td { text-align: center; } 
td * { display: inline; } 

e se si guarda come si desidera dovrebbe assolutamente sostituire * con gli elementi desiderati come:

td img, td foo { display: inline; } 
+1

Ti suggerirei di utilizzare la selezione diretta del bambino come 'td *' poiché potrebbe avere elementi più profondi per l'allineamento o la visualizzazione in modo diverso – SpYk3HH

+0

Se gli elementi devono ancora essere blocchi, quindi in linea -block sarebbe un'altra opzione. –

+3

Attenzione: se ci sono tabelle annidate nelle tabelle, l'uso di 'td * {display: inline}' distruggerà completamente il tuo sito. –

5

Secondo l'HTML5 CR, che richiede continuo supporto a “obsoleti "Anche le funzionalità, l'attributo align=center è piuttosto complicato. Rendering rules for tables say: td: gli elementi con questo attributo "sono centrati all'interno di se stessi, come se avessero la loro proprietà" text-align "impostata su" center "in un suggerimento di presentazione e per allineare i discendenti al centro."

E l'allineamento dei discendenti è definito in modo tale che un browser "allineerà solo quei discendenti che hanno le loro proprietà 'margin-left' e 'margin-right' che calcolano su un valore diverso da 'auto', che sono sovra-vincolati e che hanno uno di questi due margini con un valore utilizzato forzato a un valore maggiore e che non hanno essi stessi un attributo di allineamento applicabile. Quando più elementi devono allineare un particolare discendente, è previsto che l'elemento più profondamente annidato sostituisca gli altri. Ci si aspetta che gli elementi allineati siano allineati in modo che i valori usati dei loro margini sinistro e destro siano impostati di conseguenza. "

Quindi dipende davvero dal contenuto.

+3

Whoa. Non sapevo che fossi su Stack Overflow. Leggerò le tue risposte per tutta la mattina ora. =) –

8

È possibile utilizzare CSS in linea:
<td style = "text-align: center;">

1

è possibile utilizzare questo codice come sostituto per tavolo allineare

table 
{ 
    margin:auto; 
} 
+0

L'OP chiedeva l'allineamento TD. –

Problemi correlati