2014-06-06 7 views
5

Io uso questa costruzione per ottenere tabella con celle quadrate:td: prima e vertical-align: middle

table { 
    width: 100%; 
    table-layout: fixed; 
} 
td { 
    text-align: center; 
    vertical-align: middle; 
} 
td:before { 
    content: ''; 
    padding-top: 100%; 
    float: left; 
} 

Ma vertical-align non funziona per il contenuto della cella. Come posso risolvere il problema?

HTML è:

<table> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td>4</td> 
     <td>5</td> 
     <td>6</td> 
    </tr> 
    <tr> 
     <td>7</td> 
     <td>8</td> 
     <td>9</td> 
    </tr> 
</table> 

http://jsfiddle.net/FU84y/1/

+0

inserire il codice su Fiddle per mettere alla prova –

+0

Pubblica il tuo html. – Andrew

+0

Stai aggiungendo un padding-top: 100% che causa i problemi. –

risposta

4

Sostituire

float: left; 

con

display: inline-block; 
vertical-align: middle; 

Vedi http://jsfiddle.net/8jPT5/2/

+0

Bello, non lo sapevo :) –

+0

Bello, ma funziona solo per contenuti a riga singola. [fiddle] (http://jsfiddle.net/8jPT5/3/) .. –

+0

Non funziona se la cella include altri elementi [http://jsfiddle.net/eNFDS/](http://jsfiddle.net/eNFDS /) – user3713915

1

è necessario rimuovere padding-top: 100%; a td: prima DEMO

HTML

<table> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td>4</td> 
     <td>5</td> 
     <td>6</td> 
    </tr> 
    <tr> 
     <td>7</td> 
     <td>8</td> 
     <td>9</td> 
    </tr> 
</table> 

CSS

table { 
    width: 100%; 
    table-layout: fixed; 
} 
td { 
    text-align: center; 
    border: 1px solid #ececec; 
    height: 50px; 
} 
td:before { 
    content: ''; 
    float: left; 
} 
1

non avete bisogno di rimuovere l'imbottitura, è necessario dare la cella di una tabella di altezza.

table { 
width: 100%; 
table-layout: fixed; 
} 
td { 
text-align: center; 
vertical-align: middle; 
height: 40px; 

} 
td:before { 
content: ''; 
float: left; 
padding:100%; 
} 

vedi disegno fiddle