Set cellpadding e cellspacing em CSS?
-
19-08-2019 - |
Pergunta
Em uma tabela HTML, o cellpadding
e cellspacing
pode ser definido assim:
<table cellspacing="1" cellpadding="1">
Como pode a mesma ser realizada utilizando CSS?
Solução
Noções básicas
Para controlar "cellpadding" em CSS, você pode simplesmente usar padding
em células da tabela. Por exemplo. para 10px de "cellpadding":
td {
padding: 10px;
}
Para "cellspacing", você pode aplicar a propriedade CSS border-spacing
à sua mesa. Por exemplo. para 10px de "cellspacing":
table {
border-spacing: 10px;
border-collapse: separate;
}
Esta propriedade vai mesmo permitir espaçamento horizontal e vertical separados, algo que não poderia fazer com old-school "cellspacing".
Problemas no IE <= 7
Isto irá funcionar em quase todos os navegadores populares, exceto para o Internet Explorer através do Internet Explorer 7, onde você está quase fora da sorte. Digo "quase" porque esses navegadores ainda suporte a propriedade border-collapse
, que mescla as fronteiras do adjacente células da tabela. Se você está tentando eliminar cellspacing (isto é, cellspacing="0"
), então border-collapse:collapse
deve ter o mesmo efeito: nenhum espaço entre as células da tabela. Este apoio é buggy, embora, como ele não substitui um atributo cellspacing
HTML existente no elemento de tabela.
Em suma: para Explorador 5-7 navegadores de Internet não, border-spacing
alças de você. Para o Internet Explorer, se sua situação é apenas para a direita (você quer 0 cellspacing e sua mesa não tem já definido), você pode usar border-collapse:collapse
.
table {
border-spacing: 0;
border-collapse: collapse;
}
Nota: Para uma grande visão geral de propriedades CSS que pode-se aplicar a tabelas e para as quais navegadores, consulte este fantástica página Quirksmode .
Outras dicas
Padrão
O comportamento padrão do navegador é equivalente a:
table {border-collapse: collapse;}
td {padding: 0px;}
Cellpadding
Define a quantidade de espaço entre os conteúdos da célula e a parede celular?
table {border-collapse: collapse;}
td {padding: 6px;}
CellSpacing
Controla o espaço entre as células da tabela
table {border-spacing: 2px;}
td {padding: 0px;}
Ambos
table {border-spacing: 2px;}
td {padding: 6px;}
Ambos (especial)
table {border-spacing: 8px 2px;}
td {padding: 6px;}
. Nota: Se houver set border-spacing
, indica propriedadeborder-collapse
da tabela éseparate
Aqui pode encontrar a maneira antiga HTML de conseguir isso.
table
{
border-collapse: collapse; /* 'cellspacing' equivalent */
}
table td, table th
{
padding: 0; /* 'cellpadding' equivalent */
}
Definir margens de células da tabela realmente não tem qualquer efeito, tanto quanto eu sei. O verdadeiro equivalente CSS para cellspacing
é border-spacing
- mas ele não funciona no Internet Explorer.
Você pode usar border-collapse: collapse
para o espaçamento da célula de forma confiável set a 0 como mencionado, mas para qualquer outro valor que eu acho que a única maneira de cross-browser é continuar usando o atributo cellspacing
.
Isso funciona de hack para o Internet Explorer 6 e mais tarde, Google Chrome , Firefox, e Opera :
table {
border-collapse: separate;
border-spacing: 10px; /* cellspacing */
*border-collapse: expression('separate', cellSpacing = '10px');
}
table td, table th {
padding: 10px; /* cellpadding */
}
A declaração *
é para o Internet Explorer 6 e 7, e outros navegadores irá ignorá-lo corretamente.
expression('separate', cellSpacing = '10px')
retornos 'separate'
, mas ambas as declarações são executadas, como em JavaScript você pode passar mais argumentos do que o esperado e todos eles serão avaliados.
Para aqueles que querem um valor cellspacing diferente de zero, o seguinte CSS trabalhou para mim, mas eu só sou capaz de testá-lo no Firefox.
Veja a href="http://www.quirksmode.org/css/tables.html" rel="nofollow noreferrer"> Quirksmode ligação postou em outros lugares para detalhes de compatibilidade. Parece que pode não funcionar com versões mais antigas do Internet Explorer.
table {
border-collapse: separate;
border-spacing: 2px;
}
Uma solução simples para este problema é:
table
{
border: 1px solid #000000;
border-collapse: collapse;
border-spacing: 0px;
}
table td
{
padding: 8px 8px;
}
Além disso, se você quiser cellspacing="0"
, não se esqueça de adicionar border-collapse: collapse
no estilo do seu table
.
Enrole os conteúdos da célula com um div e você pode fazer o que quiser, mas você tem que envolver todas as células em uma coluna para obter uma efeito uniforme. Por exemplo, apenas para obter mais amplo margens direita e esquerda e:
Assim, a CSS será,
div.cellwidener {
margin: 0px 15px 0px 15px;
}
td.tight {
padding: 0px;
}
<table border="0">
<tr>
<td class="tight">
<div class="cellwidener">My content</div>
</td>
</tr>
</table>
Sim, é um aborrecimento. Sim, ele funciona com o Internet Explorer. Na verdade, eu só testei isso com o Internet Explorer, porque isso é tudo o que estamos autorizados a usar no trabalho.
Apenas uso border-collapse: collapse
para a sua mesa, e padding
para th
ou td
.
TBH. Por todo o fannying redor com CSS você pode muito bem usar cellpadding="0"
cellspacing="0"
uma vez que eles não são preterido ...
Qualquer outra pessoa sugerindo margens em <td>
de obviamente não tentou isto.
Este estilo é para redefinição completa para as tabelas -. cellpadding , cellspacing e fronteiras
Eu tive esse estilo no meu arquivo reset.css:
table{
border:0; /* Replace border */
border-spacing: 0px; /* Replace cellspacing */
border-collapse: collapse; /* Patch for Internet Explorer 6 and Internet Explorer 7 */
}
table td{
padding: 0px; /* Replace cellpadding */
}
table th,td {
padding: 8px 2px;
}
table {
border-collapse: separate;
border-spacing: 2px;
}
Basta usar regras de preenchimento CSS com dados da tabela:
td {
padding: 20px;
}
E para espaçamento de borda:
table {
border-spacing: 1px;
border-collapse: collapse;
}
No entanto, ele pode criar problemas na versão mais antiga do navegadores como Internet Explorer por causa da implementação diff do modelo de caixa.
Pelo que eu entendo das classificações W3C é que <table>
s são destinadas para a exibição de dados 'apenas'.
Baseado no que eu achei muito mais fácil de criar um <div>
com os fundos e tudo o que e ter uma tabela com dados flutuando sobre ele usando position: absolute;
e background: transparent;
...
Ele funciona em Chrome, Internet Explorer (6 ou superior) e Mozilla Firefox (2 e mais tarde).
As margens são usados ??(ou de qualquer maneira significava) para criar um espaçador entre os elementos do recipiente, como <table>
, <div>
e <form>
, não <tr>
, <td>
, <span>
ou <input>
. Usá-lo para outra coisa senão elementos de contêiner irá mantê-lo ocupado ajustar seu site para atualizações futuras do navegador.
CSS:
selector{
padding:0 0 10px 0; // Top left bottom right
}
Tente isto:
table {
border-collapse: separate;
border-spacing: 10px;
}
table td, table th {
padding: 10px;
}
Ou tente o seguinte:
table {
border-collapse: collapse;
}
table td, table th {
padding: 10px;
}
Eu costumava !important
após o border-collapse como
border-collapse: collapse !important;
e ele funciona para mim no IE7. Parece para substituir o atributo cellspacing.
Você pode facilmente definir o preenchimento dentro das células da tabela usando a propriedade CSS preenchimento. É uma forma válida para produzir o mesmo efeito que atributo cellpadding da tabela.
table,
th,
td {
border: 1px solid #666;
}
table th,
table td {
padding: 10px;
/* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set Cellpadding in CSS</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Row</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Clark</td>
<td>Kent</td>
<td>clarkkent@mail.com</td>
</tr>
<tr>
<td>2</td>
<td>Peter</td>
<td>Parker</td>
<td>peterparker@mail.com</td>
</tr>
<tr>
<td>3</td>
<td>John</td>
<td>Rambo</td>
<td>johnrambo@mail.com</td>
</tr>
</tbody>
</table>
</body>
</html>
Da mesma forma, você pode usar o CSS propriedade border-spacing para aplicar o espaçamento entre as bordas de célula de tabela adjacentes como o atributo cellspacing. No entanto, a fim de trabalhar border-spacing o valor da propriedade border-collapse Muse ser separado, que é o padrão.
table {
border-collapse: separate;
border-spacing: 10px;
/* Apply cell spacing */
}
table,
th,
td {
border: 1px solid #666;
}
table th,
table td {
padding: 5px;
/* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set Cellspacing in CSS</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Row</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Clark</td>
<td>Kent</td>
<td>clarkkent@mail.com</td>
</tr>
<tr>
<td>2</td>
<td>Peter</td>
<td>Parker</td>
<td>peterparker@mail.com</td>
</tr>
<tr>
<td>3</td>
<td>John</td>
<td>Rambo</td>
<td>johnrambo@mail.com</td>
</tr>
</tbody>
</table>
</body>
</html>
<table>
<tr>
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
cell-padding
pode ser dada por padding
em CSS enquanto cell-spacing
pode ser definido através da criação border-spacing
para a tabela.
table {
border-spacing: 10px;
}
td {
padding: 10px;
}
Fiddle .
td {
padding: npx; /* For cellpadding */
margin: npx; /* For cellspacing */
border-collapse: collapse; /* For showing borders in a better shape. */
}
Se margin
não funcionou, tente set display
de tr
para block
e depois margem vai funcionar.
Para tabelas, cellspacing e cellpadding são obsoletos em HTML 5.
Agora, para CellSpacing você tem que usar border-spacing. E para cellpadding você tem que usar border-collapse.
E certifique-se de não usar isso em seu código HTML5. Sempre tente usar esses valores em um arquivo CSS 3.
table {
border-spacing: 4px;
color: #000;
background: #ccc;
}
td {
padding-left: 4px;
}
Você pode simplesmente fazer algo assim no seu CSS, usando border-spacing
e padding
:
table {
border-collapse: collapse;
}
td, th {
padding: 1em;
border: 1px solid blue;
}
<table>
<tr>
<th>head_1</th>
<th>head_2</th>
<th>head_3</th>
<th>head_4</th>
</tr>
<tr>
<td>txt_1</td>
<td>txt_2</td>
<td>txt_3</td>
<td>txt_4</td>
</tr>
</table>
Em uma tabela HTML, o cellpadding
e cellspacing
pode ser definido assim:
Para cell-preenchimento :
Basta ligar td/th
celular padding
simples.
/******Call-Padding**********/
table {
border-collapse: collapse;
}
td {
border: 1px solid red;
padding: 10px;
}
<table>
<tr>
<th>Head1 </th>
<th>Head2 </th>
<th>Head3 </th>
<th>Head4 </th>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
<td>44</td>
</tr>
</table>
table {
border-collapse: collapse;
}
td {
border: 1px solid red;
padding: 10px;
}
Para -espaçamento de célula
Apenas simples chamada table
border-spacing
/********* Cell-Spacing ********/
table {
border-spacing: 10px;
border-collapse: separate;
}
td {
border: 1px solid red;
}
<table>
<tr>
<th>Head1</th>
<th>Head2</th>
<th>Head3</th>
<th>Head4</th>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
<td>44</td>
</tr>
</table>
/********* Cell-Spacing ********/
table {
border-spacing: 10px;
border-collapse: separate;
}
td {
border: 1px solid red;
}
Mais estilo de tabela por link da fonte CSS aqui você tem mais estilo tabela CSS .
Como sobre a adição o estilo diretamente para a mesa em si? Isto é, em vez de usar table
no seu CSS, que é um BAD abordagem se você tiver várias tabelas em sua página:
<table style="border-collapse: separate;border-spacing: 2px;">
<tr>
<td style="padding: 4px 4px;">Some Text</td>
</tr>
</table>