2013-06-07 15 views
29

Ich Refactoring eine alte Website, und das Labyrinth ist voll von Tabellen. Wir ziehen um HTML5 und ich brauche einen Tisch zu beheben vollerhtml5 entspricht align = "center" in Tabelle TD

<td align="center"> 

Code. Ich fand eine Teillösung durch Erstellen einer Klasse

.centered { 
    text-align: center; 
} 

und es jedem TD mit Text zuweisen.
Aber das funktioniert nicht auf Bildern und einigen anderen Elementen.

margin: auto; 

wird auch nicht funktionieren.
Was ist der schnellste Weg, um ALLE Inhalte in einem TD zu zentrieren?

+0

Breite: 50%; Rand: 0 automatisch; das sollte den gesamten Inhalt in einem div zentrieren. –

+10

Wenn Sie Ihre Website "auf HTML5 verschieben", dann sollten Sie vielleicht _table Layouts _ auch wenn Sie gerade dabei sind ... – CBroe

+1

können Sie uns in einem jsFiddle zeigen, wo es "nicht funktioniert"? – SpYk3HH

Antwort

33

Wenn sie Elemente auf Blockebene sind, werden sie nicht von text-align: center; beeinflusst. Jemand könnte img { display: block; } gesetzt haben und das wirft es aus dem Gleichgewicht. Sie können versuchen:

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

und wenn es wie gewünscht aussieht Sie sollte definitiv * ersetzen mit den gewünschten Elementen wie:

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

Ich würde vorschlagen, direkte Kindauswahl wie 'td *' zu verwenden, da er Elemente tiefer in Ausrichtung haben kann, um anders auszurichten oder anzuzeigen – SpYk3HH

+0

Wenn die Elemente noch Blöcke sein müssen, dann inline Block wäre eine andere Option. –

+3

Warnung: Wenn in den Tabellen verschachtelte Tabellen vorhanden sind, wird die Verwendung von 'td * {display: inline}' Ihre Website völlig zerstören. –

5

Nach dem HTML5 CR, die „veraltete kontinuierliche Unterstützung erfordert "Features, auch das align=center Attribut ist ziemlich schwierig. Rendering rules for tables say: td Elemente mit dem Attribut „wird erwartet, dass Text in sich selbst zu zentrieren, als ob sie in einem Präsentations-Hinweis ihre‚text-align‘Eigenschaft auf‚Zentrum‘hatte, und deren Nachkommen in die Mitte auszurichten.“

Und die Ausrichtung von Nachkommen ist so definiert, dass ein Browser nur diejenigen Nachkommen "ausrichtet", deren "margin-left" - und "margin-right" -Eigenschaften einen anderen Wert als "auto" haben, die überbehindert sind einer dieser beiden Ränder mit einem gebrauchten Wert, der zu einem höheren Wert gezwungen wird und der selbst kein anwendbares align-Attribut aufweist. Wenn mehrere Elemente einen bestimmten Nachkommen ausrichten sollen, wird erwartet, dass das am tiefsten verschachtelte Element die anderen überschreibt. Es wird erwartet, dass ausgerichtete Elemente ausgerichtet werden, indem die verwendeten Werte ihrer linken und rechten Ränder entsprechend eingestellt werden. "

Es kommt also wirklich auf den Inhalt an.

+3

Whoa. Ich wusste nicht, dass du auf Stack Overflow bist. Ich werde jetzt den ganzen Morgen eure Antworten durchlesen. =) –

8

Sie Inline-CSS verwenden können:
<td style = "text-align: center;">

1

Sie diesen Code als Ersatz

ausrichten für die Tabelle verwenden können
table 
{ 
    margin:auto; 
} 
+0

Das OP fragte nach TD Ausrichtung. –

Verwandte Themen