Como você especifica o preenchimento de mesa em CSS? (mesa, sem enchimento de células)

Tenho uma tabela com fundo colorido e preciso de especificar o enchimento entre a tabela e o conteúdo, células I. E.
A etiqueta de mesa não parece aceitar um valor de enchimento.
Firebug mostra o layout da mesa e do tbody com enchimento 0, mas não aceita qualquer valor introduzido para eles, então eu acho que eles apenas não têm a propriedade de enchimento.
Mas a coisa é que eu quero a mesma separação entre as células do que as células de topo com a mesa de cima e as células de baixo com a tabela de inferior.
Mais uma vez, o que eu quero não é enchimento de células.

EDIT: obrigado, o que eu realmente precisava, eu percebi agora, era espaço de fronteiras, ou seu equivalente html, cellspacing.
Mas por alguma razão, não fazem nada no site em que estou a trabalhar.
Ambos funcionam muito bem em um HTML separado, mas no site eles não.
Pensei que podia ser um estilo Qualquer a substituir a propriedade, mas a localização de telemóveis e um espaço entre fronteiras não deviam ser substituídos, certo?
(Eu uso firefox)

editar 2: não, TD padding não é o que eu preciso. Com o preenchimento TD, as placas de cima e de baixo das células adjacentes somam-se, então há o dobro do espaço (acolchoamento na verdade) entre duas células do que entre a célula de cima e a borda de cima da mesa. Quero ter exactamente a mesma distância entre eles.

Author: Brian Tompsett - 汤莱恩, 2009-11-17

11 answers

O método mais fácil/melhor suportado é usar <table cellspacing="10">

The css way: border-spacing (not supported by IE i don't think)

    <!-- works in firefox, opera, safari, chrome -->
    <style type="text/css">
    
    table.foobar {
    	border: solid black 1px;
    	border-spacing: 10px;
    }
    table.foobar td {
    	border: solid black 1px;
    }
    
    
    </style>
    
    <table class="foobar" cellpadding="0" cellspacing="0">
    <tr><td>foo</td><td>bar</td></tr>
    </table>

Editar: se só quiser preencher o conteúdo da célula, e não o espaço, pode simplesmente usar

<table cellpadding="10">

Ou

td {
    padding: 10px;
}
 38
Author: Rob, 2015-02-11 14:57:20
Pode definir uma margem para o quadro. Alternativamente, enrole a mesa em um div e use o preenchimento do div.
 23
Author: Frank Schwieterman, 2009-11-17 18:04:14
Eis o que deves entender sobre as mesas... Não são uma árvore de elementos independentes aninhados. São um único elemento composto. Enquanto os TDs individuais se comportam mais ou menos como elementos de bloco CSS, o material intermediário (qualquer coisa entre a tabela e TD, incluindo TRs e TBODYs) é indivisível e não cai em qualquer inline Nem block. No random HTML elements are allowed in that other-dimensional space, and the size of such other-dimensional o espaço não é configurável através da CSS. Apenas a propriedade HTML cellspacing pode até chegar a ela, e essa propriedade não tem analógico em CSS. Então, para resolver o seu problema, eu sugeriria um papel de mergulhador como outro poster sugere, ou se você absolutamente deve mantê-lo contido na mesa, você tem esse lixo feio:
<style>
    .padded tr.first td { padding-top:10px; }
    .padded tr.last td { padding-bottom:10px; }
    .padded td.first { padding-left:10px; }
    .padded td.last { padding-right:10px; }
</style>

<table class='padded'>
    <tr class='first'>
        <td class='first'>a</td><td>b</td><td class='last'>c</td>
    </tr>
    <tr>
        <td class='first'>d</td><td>e</td><td class='last'>f</td>
    </tr>
    <tr class='last'>
        <td class='first'>g</td><td>h</td><td class='last'>i</td>
    </tr>
</table>
 21
Author: jpsimons, 2009-11-19 06:21:39
Engraçado, estava a fazer isto ontem. Só precisas disto no teu ficheiro css.
.ablock table td {
     padding:5px;
}

Depois enrole a tabela num div

adequado.
<div class="ablock ">
<table>
  <tr>
    <td>
 5
Author: Cruachan, 2009-11-17 18:12:20
Não podes... Talvez se você postou uma imagem do efeito desejado, há outra maneira de alcançá-lo.

Por exemplo, você pode embrulhar a mesa inteira em um DIV e definir o enchimento para o div.

 4
Author: Seb, 2009-11-17 18:03:10

Com css, uma tabela pode ter enchimento independentemente das suas células.

A propriedade de enchimento não é herdada pelos seus filhos.

Então, definindo:

table {
    padding: 5px;
}

Deve funcionar. Você também pode dizer especificamente ao navegador como pad (ou, neste caso, não pad) suas células.

td {
    padding: 0px;
}

Editar: não suportado pelo IE8. Triste.

 2
Author: MPelletier, 2009-11-17 18:30:40
Pode tentar a propriedade de espaço fronteiriço. Isso deve fazer o que quiseres. Mas você pode querer ver esta resposta .
 1
Author: Vincent Ramdhanie, 2017-05-23 12:09:46

O CSS não nos permite fazer isto ao nível da mesa. Geralmente, especifico {[[0]} quando quero atingir este efeito. Obviamente não é uma solução css, por isso, aceita-a pelo que vale.

 1
Author: localshred, 2009-11-17 18:19:34
Há outro truque:
/* Padding on the sides of the table */
table th:first-child, .list td:first-child { padding-left: 28px; }
table th:last-child, .list td:last-child { padding-right: 28px; }

(acabei de o ver no meu trabalho actual)

 1
Author: Offirmo, 2016-04-21 17:43:17
table {
    border: 1px solid transparent;
}
 0
Author: Anibal Enrique Alvarez Sifonte, 2015-03-25 04:40:38
table {
    background: #fff;
    box-shadow: 0 0 0 10px #fff;
    margin: 10px;
    width: calc(100% - 20px); 
}
 0
Author: Rufina, 2016-11-13 10:49:13