O que substitui o preenchimento de célula, espaçamento, classificação e alinhamento de células nas tabelas HTML5?

320

No Visual Studio , estou vendo estes avisos:

  • Validação (HTML 5): o atributo 'cellpadding' não é um atributo válido do elemento 'table'.
  • Validação (HTML 5): o atributo 'cellpacing' não é um atributo válido do elemento 'table'.
  • Validação (HTML 5): o atributo 'valign' não é um atributo válido do elemento 'td'.
  • Validação (HTML 5): o atributo 'align' não é um atributo válido do elemento 'td'.

Se eles não são atributos válidos no HTML5 , o que os substitui no CSS?

Code Maverick
fonte
4
Descobri que, mesmo com HTML5, os atributos cellpadding e cellpacing ainda são necessários. Ou seja, sem declarar explicitamente esses atributos, o preenchimento e o espaçamento padrão são aplicados. Portanto, acho que sempre devo defini-los com o valor "0" para anular os valores padrão. É possível que tenham sido preteridos, mas os navegadores ainda não os entenderam. Os valores padrão ainda são aplicados na versão 37 do Chrome.
Aquarelle

Respostas:

496
/* cellpadding */
th, td { padding: 5px; }

/* cellspacing */
table { border-collapse: separate; border-spacing: 5px; } /* cellspacing="5" */
table { border-collapse: collapse; border-spacing: 0; }   /* cellspacing="0" */

/* valign */
th, td { vertical-align: top; }

/* align (center) */
table { margin: 0 auto; }
drudge
fonte
6
Vale ressaltar que o espaçamento entre bordas parece funcionar apenas ao usar essa propriedade na tabela também "border-collapse: separado;"
Blowsie
3
@ Samir - Parece que um float:right;vai fazer o truque. jsfiddle.net/HGFH7
drudge
70

Isso deve resolver seu problema:

td {
    /* <http://www.w3.org/wiki/CSS/Properties/text-align>
     * left, right, center, justify, inherit
     */
    text-align: center;
    /* <http://www.w3.org/wiki/CSS/Properties/vertical-align>
     * baseline, sub, super, top, text-top, middle,
     * bottom, text-bottom, length, or a value in percentage
     */
    vertical-align: top;
}
Cole Johnson
fonte
13

Em determinada mesa

<table style="border-collapse: separate; border-spacing: 10px;" >
    <tr>
      <td>Hi</td>
      <td>Hello</td>
    <tr/>
    <tr>
      <td>Hola</td>
      <td>Oi!</td>
    <tr/>
</table>

Xtian11
fonte
3

Como alternativa, pode usar para determinada tabela

 <table style="width:1000px; height:100px;">
    <tr>
        <td align="center" valign="top">Text</td> //Remove it
        <td class="tableFormatter">Text></td>
    </tr>
</table>

Adicione este css no arquivo externo

.tableFormatter
{
width:100%;
vertical-align:top;
text-align:center;
}
JaiSankarN
fonte
1
CSS inline não recomendado.
Samuel Ramzan
Sim você está certo. eu não recomendo. Vamos para o arquivo css externo .ClassName {width: 100%; alinhamento de texto: centro; vertical-align: top;} Obrigado
JaiSankarN