2013-06-07 22 views
29

Przebudowuję starą stronę, a ten labirynt jest pełen tabel. Idziemy do HTML5 i muszę naprawić tabelę pełnego koduhtml5 odpowiednik align = "center" w tabeli TD

<td align="center"> 

. znalazłem częściowe rozwiązanie, tworząc klasę

.centered { 
    text-align: center; 
} 

i przypisanie go do każdego TD zawierającej tekst.
Ale to nie działa w przypadku obrazów i niektórych innych elementów.

margin: auto; 

nie będzie działać.
Jaki jest najszybszy sposób na wyśrodkowanie WSZYSTKICH treści wewnątrz TD?

+0

width: 50%; margin: 0 auto; które powinno wyśrodkować całą zawartość w div. –

+10

Jeśli przerabiasz swoją witrynę "przechodząc na HTML5", to może powinieneś zrezygnować z _table layouts_, gdy jesteś na tym ... – CBroe

+1

czy możesz pokazać nam w jsFiddle, gdzie to "nie działa"? – SpYk3HH

Odpowiedz

33

Jeśli są elementami blokowymi, nie będą miały wpływu na text-align: center;. Ktoś mógł ustawić img { display: block; } i to wyrzuciło go z walnięcia. Można spróbować:

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

i jeśli wygląda jak pożądane Ci powinien zdecydowanie wymiana * z pożądanych elementów, takich jak:

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

Proponuję użyć bezpośredniego wybierania dziecka, takiego jak 'td *', ponieważ może on mieć elementy głębsze, aby wyrównać lub wyświetlać inaczej – SpYk3HH

+0

Jeśli elementy nadal muszą być blokami, to wstawiaj -block będzie inną opcją. –

+3

Ostrzeżenie: jeśli w tabelach są tabele zagnieżdżone, użycie 'td * {display: inline}' spowoduje całkowite zniszczenie witryny. –

5

Zgodnie z HTML5 CR, który wymaga stałego wsparcia dla „przestarzały "Funkcje też, atrybuty align=center są raczej trudne. Rendering rules for tables say: td elementy z tego atrybutu „oczekuje się wyśrodkować tekst w sobie, jakby mieli ich«text-align»własność ustawiony na«centrum»w prezentacyjnego podpowiedź i wyrównać potomków do centrum.”

A wyrównywanie potomków jest zdefiniowane w taki sposób, że przeglądarka "wyrówna tylko te potomki, które mają zarówno właściwości" margines-lewy ", jak i" margines-prawo ", obliczające wartość inną niż" auto ", które są nadmiernie ograniczone i które mają jeden z tych dwóch marginesów, w których użyta wartość jest wymuszona na większą wartość i które same nie mają odpowiedniego atrybutu dopasowania. Kiedy wiele elementów ma zestroić określonego potomka, najbardziej zagnieżdżony element taki ma zastąpić pozostałe. Wyrównane elementy powinny być wyrównane, odpowiednio do ustawionych wartości lewych i prawych marginesów. "

To naprawdę zależy od treści.

+3

Whoa. Nie wiedziałem, że jesteś na Stack Overflow. Przez cały ranek będę czytał twoje odpowiedzi. =) –

8

Można użyć inline CSS:
<td style = "text-align: center;">

1

można użyć tego kodu jako zamiennik tabeli wyrównać

table 
{ 
    margin:auto; 
} 
+0

OP poprosił o wyrównanie TD. –