¿Establecer el relleno de celdas y el espacio de celdas en CSS?

En una tabla HTML, el cellpadding y cellspacing se puede configurar así:

<table cellspacing="1" cellpadding="1">

¿Cómo se puede lograr lo mismo usando CSS?

preguntado el 04 de diciembre de 08 a las 06:12

Solo una sugerencia general, verifique si su style.css hace un "reinicio" en sus tablas antes de probar estas soluciones. Ejemplo: si no tiene tablas configuradas en width:auto luego border-collapse podría no funcionar como se esperaba. -

Use espaciado de borde en la mesa y relleno en td. -

30 Respuestas

conceptos básicos

Para controlar el "relleno de celda" en CSS, simplemente puede usar padding en las celdas de la tabla. Por ejemplo, para 10 píxeles de "relleno de celda":

td { 
    padding: 10px;
}

Para el "espacio entre celdas", puede aplicar el border-spacing Propiedad CSS a su tabla. Por ejemplo, para 10 píxeles de "espacio entre celdas":

table { 
    border-spacing: 10px;
    border-collapse: separate;
}

Esta propiedad incluso permitirá un espaciado horizontal y vertical separados, algo que no podría hacer con el "espacio entre celdas" de la vieja escuela.

Problemas en IE ≤ 7

Esto funcionará en casi todos los navegadores populares, excepto en Internet Explorer hasta Internet Explorer 7, donde casi no tiene suerte. Digo "casi" porque estos navegadores aún admiten la border-collapse propiedad, que fusiona los bordes de las celdas de tabla contiguas. Si está intentando eliminar el espaciamiento celular (es decir, cellspacing="0") entonces border-collapse:collapse debería tener el mismo efecto: no hay espacio entre las celdas de la tabla. Sin embargo, este soporte tiene errores, ya que no anula un cellspacing Atributo HTML en el elemento de tabla.

En resumen: para los navegadores que no son de Internet Explorer 5-7, border-spacing te maneja. Para Internet Explorer, si su situación es la correcta (desea 0 espacio entre celdas y su tabla aún no lo tiene definido), puede usar border-collapse:collapse.

table { 
    border-spacing: 0;
    border-collapse: collapse;
}

Nota: Para obtener una excelente descripción general de las propiedades CSS que se pueden aplicar a las tablas y para qué navegadores, consulte este fantástica página de Quirksmode.

Respondido el 25 de junio de 20 a las 03:06

cellpadding = "0" aún puede marcar la diferencia en Chrome 13.0.782.215, incluso si se aplica border-collapse: collapse y border-spacing a la tabla. - Whitneyland

@LeeWhitney necesita establecer padding: 0 en las celdas de su tabla. - Martín Ørding-Thomsen

Está un poco fuera de tema, pero los atributos de relleno de celdas y espacio de celdas se eliminan en HTML5, por lo que CSS es el único camino a seguir ahora. - ignas2526

Hola todos. Actualicé la respuesta para mayor claridad, incluida una sección sobre relleno de celdas, que pensé que era obvio (solo use "relleno"). Espero que sea más útil ahora. - eric nguyen

Es cierto, @vapcguy, en cualquiera de las otras situaciones infinitamente variables en las que puede estar diseñando una tabla, necesitará definir selectores más específicos. Los anteriores están marcados como ejemplos. - eric nguyen

Predeterminado

El comportamiento predeterminado del navegador es equivalente a:

table {border-collapse: collapse;}
td    {padding: 0px;}

         Ingrese la descripción de la imagen aquí

Acolchado celular

Establece la cantidad de espacio entre el contenido de la celda y la pared de la celda.

table {border-collapse: collapse;}
td    {padding: 6px;}

        Ingrese la descripción de la imagen aquí

Espacio celular

Controla el espacio entre las celdas de la tabla.

table {border-spacing: 2px;}
td    {padding: 0px;}

        Ingrese la descripción de la imagen aquí

Ambos

table {border-spacing: 2px;}
td    {padding: 6px;}

        Ingrese la descripción de la imagen aquí

Ambos (especial)

table {border-spacing: 8px 2px;}
td    {padding: 6px;}

        Ingrese la descripción de la imagen aquí

Nota: Si hay border-spacing conjunto, indica border-collapse propiedad de la tabla es separate.

Pruébelo usted mismo!

Aquí puede encontrar la antigua forma HTML de lograr esto.

Respondido 07 Abr '19, 10:04

¿Cómo está desapareciendo el espacio alrededor de la mesa? Cuando configuro "border-spacing: 8px 12px, agrega el espacio no solo entre, sino entre el borde de la tabla y las celdas exteriores. Pero eso no se muestra en las imágenes aquí; están alineadas a la izquierda. Kaz

@ 2astalavista Y desafortunadamente si alguien quiere eliminar el efecto del espaciado exterior, no funcionará de esta manera con estos atributos CSS. - Kaz

@Kaz Es posible que necesite usar un margen negativo para ocultar esa parte molesta. - usuario669677

El relleno predeterminado en TD es típicamente 1px, no 0 - Jan M

Ten cuidado: border-spacing:horizontal vertical; mientras que, por ejemplo, padding:vertical horizontal;. - adam chalcraft

table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

table td, table th
{
    padding: 0; /* 'cellpadding' equivalent */
}

Respondido 23 Jul 13, 21:07

En realidad, esto es lo único que pude hacer para mí, aunque apliqué la información a una identificación para evitar ser demasiado general. - Kzqai

Eso es cellspacing=0 equivalente. El equivalente de cellspacing=1 es completamente diferente. Vea la respuesta aceptada. - Trigonometría

No deberia table td y table th ser sólo td y th ¿respectivamente? Funciona de cualquier manera, pero un selector más pequeño significa una coincidencia ligeramente más rápida. cole johnson

@Cole En realidad, creo que debería ser table > tr > td y table > tr > th. Esto es casi tan rápido como tr y th, y está garantizado que funcionará si tiene una tabla anidada. Solo mi 2c - tejón leviatán

@ aboveyou00 pero es el table selector necesario? IIRC, un <td> no es válido a menos que esté dentro de un <tr>. - cole johnson

Establecer márgenes en las celdas de la tabla realmente no tiene ningún efecto que yo sepa. El verdadero equivalente de CSS para cellspacing is border-spacing - pero no funciona en Internet Explorer.

Puedes usar border-collapse: collapse para establecer de manera confiable el espaciado de celda en 0 como se mencionó, pero para cualquier otro valor, creo que la única forma entre navegadores es seguir usando el cellspacing atributo.

Respondido 02 ago 13, 21:08

En la era actual, esa realidad es una succión hasta el enésimo grado. - John K

Esto es casi correcto, pero border-collapse solo funciona en IE 5-7 si la tabla aún no tiene un cellspacing atributo definido. Escribí una respuesta completa que combina todas las partes correctas de las otras respuestas en esta página en caso de que sea útil. - eric nguyen

Para ser honesto, ¿a quién le importa Internet Explorer? Cualquiera que lo use debe saber que los sitios web dañados son su culpa - por usar un navegador de tan baja calidad. Los sitios web no deberían tener que lidiar con esto. Deje que Internet Explorer se pierda. Olvídese de su apoyo. No lo necesitamos, y es un dolor desarrollarlo. - usuario6516765

Este truco funciona para Internet Explorer 6 y versiones posteriores, Google Chrome, Firefox y Opera:

table {
    border-collapse: separate;
    border-spacing: 10px; /* cellspacing */
    *border-collapse: expression('separate', cellSpacing = '10px');
}

table td, table th {
    padding: 10px; /* cellpadding */
}

LA * La declaración es para Internet Explorer 6 y 7, y otros navegadores la ignorarán correctamente.

expression('separate', cellSpacing = '10px') devoluciones 'separate', pero se ejecutan ambas declaraciones, ya que en JavaScript puede pasar más argumentos de los esperados y todos serán evaluados.

Respondido 29 Oct 13, 17:10

para aquellos que intentan correos electrónicos receptivos, tenga en cuenta que * no es reconocido por Outlook 2007+ (usa Word como motor de procesamiento) campañamonitor.com/css - optimo

Para aquellos que quieren un valor de espacio de celdas distinto de cero, el siguiente CSS funcionó para mí, pero solo puedo probarlo en Firefox.

Consulte las En modo capricho aquí publicado en otro lugar para obtener detalles de compatibilidad. Parece que no funciona con versiones anteriores de Internet Explorer.

table {
    border-collapse: separate;
    border-spacing: 2px;
}

Respondido 07 Abr '19, 10:04

La solución simple a este problema es:

table
{
    border: 1px solid #000000;
    border-collapse: collapse;
    border-spacing: 0px;
}
table td
{
    padding: 8px 8px;
}

Respondido 23 Jul 13, 21:07

Además, si quieres cellspacing="0", no olvides agregar border-collapse: collapse en tu tablehoja de estilo.

Respondido el 04 de diciembre de 08 a las 09:12

Envuelva el contenido de la celda con un div y puede hacer lo que quiera, pero debe envolver cada celda en una columna para obtener un efecto uniforme. Por ejemplo, para obtener márgenes izquierdo y derecho más amplios:

Entonces el 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>

Sí, es una molestia. Sí, funciona con Internet Explorer. De hecho, solo lo he probado con Internet Explorer, porque eso es todo lo que podemos usar en el trabajo.

Respondido 07 Abr '19, 10:04

Ojalá pudiera votar más ... Primer ejemplo que no repitió a los demás y uno que muestra cómo limitar el efecto a una sola tabla o celda, en lugar de a todas en la página. - vapcguy

Sólo tiene que utilizar border-collapse: collapse para tu mesa, y padding para th or td.

Respondido 07 Abr '19, 11:04

Este estilo es para reinicio completo para tablas - relleno de celdas, espaciamiento celular y fronteras.

Tenía este estilo en mi archivo 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 */
}

Respondido 07 Abr '19, 11:04

TBH. Para todos los fanáticos con CSS, también puede usar cellpadding="0" cellspacing="0" ya que no están en desuso ...

Alguien más sugiera márgenes en <td>Obviamente, no ha intentado esto.

Respondido 16 Oct 13, 00:10

En realidad, están obsoletos en html5. - Kzqai

table th,td {
    padding: 8px 2px;
}
table {
    border-collapse: separate;
    border-spacing: 2px;
}

Respondido 30 Jul 15, 11:07

Simplemente use las reglas de relleno CSS con los datos de la tabla:

td { 
    padding: 20px;
}

Y para el espaciado de bordes:

table { 
    border-spacing: 1px;
    border-collapse: collapse;
}

Sin embargo, puede crear problemas en versiones anteriores de navegadores como Internet Explorer debido a la implementación diferencial del modelo de caja.

Respondido 02 Jul 14, 21:07

Por lo que entiendo de las clasificaciones del W3C es que <table>Los s están diseñados para mostrar datos 'solo'.

En base a eso, me resultó mucho más fácil crear un <div> con los fondos y todo eso y tener una tabla con datos flotando sobre ella usando position: absolute; y background: transparent;...

Funciona en Chrome, Internet Explorer (6 y posterior) y Mozilla Firefox (2 y posterior).

Los márgenes se utilizan (o significan de todos modos) para crear un espaciador entre los elementos del contenedor, como <table>, <div> y <form>no, <tr>, <td>, <span> or <input>. Usarlo para cualquier otra cosa que no sean elementos de contenedor lo mantendrá ocupado ajustando su sitio web para futuras actualizaciones del navegador.

Respondido 07 Abr '19, 10:04

OP nunca dijo para qué estaba usando la mesa. - Alfabravo

CSS:

selector{
    padding:0 0 10px 0; // Top left bottom right 
}

Respondido 02 Jul 14, 21:07

Puede establecer fácilmente el relleno dentro de las celdas de la tabla utilizando la propiedad de relleno CSS. Es una forma válida de producir el mismo efecto que el atributo de relleno de celda de la tabla.

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>

De manera similar, puede usar la propiedad de espaciado de borde de CSS para aplicar el espaciado entre los bordes de las celdas de la tabla adyacente como el atributo de espaciado de celdas. Sin embargo, para trabajar el espaciado de bordes, el valor de la propiedad de colapso de borde debe estar separado, que es el valor predeterminado.

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>

Respondido 07 Abr '19, 11:04

Prueba esto:

table {
    border-collapse: separate;
    border-spacing: 10px;
}
table td, table th {
    padding: 10px;
}

O pruebe esto:

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}

Respondido 29 Oct 13, 17:10

solía !important después del colapso de la frontera como

border-collapse: collapse !important;

y me funciona en IE7. Parece anular el atributo de espacio entre celdas.

Respondido 29 Oct 13, 17:10

!important solo sería necesario para anular otras configuraciones de CSS en una situación compleja (e incluso entonces, en su mayoría, un enfoque incorrecto). - Jukka K. Korpela

También una repetición de la respuesta de Dan, solo agrega el !important, que podría haberse incluido como comentario en lugar de como otra respuesta. - vapcguy

<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 puede ser dado por padding en CSS mientras cell-spacing se puede configurar configurando border-spacing para mesa.

table {
    border-spacing: 10px;
}
td {
    padding: 10px;
}

Violín.

Respondido el 11 de enero de 17 a las 08:01

td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

If margin no funcionó, intente configurar display of tr a block y luego el margen funcionará.

Respondido 07 Abr '19, 11:04

Para las tablas, el espacio de celdas y el relleno de celdas son obsoletos en HTML 5.

Ahora, para el espaciado de celdas, debe usar el espaciado de bordes. Y para el relleno de celdas, debe usar border-collapse.

Y asegúrese de no usar esto en su código HTML5. Intente siempre utilizar estos valores en un archivo CSS 3.

Respondido 07 Abr '19, 11:04

table {
    border-spacing: 4px; 
    color: #000; 
    background: #ccc; 
}
td {
    padding-left: 4px;
}

Respondido 07 Abr '19, 11:04

En una tabla HTML, el cellpadding y cellspacing se puede configurar así:

Si relleno de celda:

Solo llama simple td/th (NGF por sus siglas en inglés), padding.

Ejemplo:

/******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;
}

Si espaciamiento de celdas

Solo llama simple table border-spacing

Ejemplo:

/********* 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;
}

Más estilo de tabla por enlace de fuente CSS aquí obtienes más estilo de tabla por CSS.

Respondido 07 Abr '19, 11:04

Simplemente puede hacer algo como esto en su CSS, usando border-spacing y 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>

Respondido el 08 de Septiembre de 17 a las 09:09

La regla de espaciado de bordes se ignora cuando los bordes se contraen. - dgrogan

Puede verificar el código a continuación, simplemente cree un index.html y ejecutarlo.

<!DOCTYPE html>
<html>

<head>
  <style>
    table {
      border-spacing: 10px;
    }
    
    td {
      padding: 10px;
    }
  </style>
</head>

<body>
  <table cellspacing="0" cellpadding="0">
    <th>Col 1</th>
    <th>Col 2</th>
    <th>Col 3</th>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </table>
</body>

</html>

PRODUCCIÓN :

enter image description here

Respondido 09 Jul 20, 02:07

¿Qué tal agregar el estilo directamente a la mesa? Esto es en lugar de usar table en tu CSS, que es un BAD enfoque si tiene varias tablas en su página:

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>

Respondido 26 Feb 15, 05:02

Poner "style" en la etiqueta de la tabla es peor que poner "table # someId" en su css, ya que el estilo debería separarse del contenido. Pero el punto principal de la pregunta es cómo convertir el HTML obsoleto en CSS adecuado. Lo que ha hecho correctamente, pero en realidad no ha agregado nada con su respuesta y se está enfocando en un problema no relacionado. - Tipi

¿Nada añadido? Lo que agregué fue centrarme en cómo todas las demás respuestas aquí básicamente dicen usar td { padding: ... } or table { border-spacing: ... } , en lugar de aplicarlo directamente a la mesa. Esos no añaden nada. Como dije, cuando tienes varias tablas en tu página y no quieres afectarlas, ¡no quieres hacerlo! No necesitamos una página completa de respuestas que diga "¡Use la hoja de estilo!", Cuando quizás eso sea lo último que desee, porque solo desea formatear una celda o tabla. Ahí es cuando se aplica a table or td es indeseable y crear una clase completamente nueva es excesivo. - vapcguy

Todas las demás respuestas usan una hoja de estilo porque la pregunta original era "¿cómo puedo hacer esto con CSS?". Si la pregunta hubiera sido "¿cómo puedo hacer que CSS afecte solo a esta tabla?", Entonces su respuesta sería más apropiada (aunque todavía estaría a favor table#someId). - Tipi

Técnicamente, el estilo en línea sigue siendo CSS, pero no usa una hoja de estilo, pero entiendo tu punto. - vapcguy

Porque la idea detrás de una clase es la reutilización. Para una sola vez, eso tiene poco sentido y es exagerado, en mi humilde opinión. - vapcguy

Esto funcionó para mí:

table {border-collapse: collapse}
table th, table td {padding: 0}

Respondido 24 Feb 21, 11:02

Sugiero que esto y todas las celdas de la tabla en particular se realicen.

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px;
 }

Respondido 24 Feb 21, 11:02

Digamos que queremos asignar un "espacio de celda" de 10px y un "espacio de celda" de 15px a nuestra tabla, de una manera compatible con HTML5. Mostraré aquí dos métodos que dan resultados realmente similares.

Se aplican dos conjuntos diferentes de propiedades CSS al mismo marcado HTML para la tabla, pero con conceptos opuestos:

  • el primero usa el valor predeterminado para border-collapse (separate) y usos border-spacing para proporcionar el espacio celular,

  • el segundo cambia border-collapse a collapse y usa el border propiedad como el espacio entre celdas.

En ambos casos, el relleno de celda se logra asignando padding:10px En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. tdsy, en ambos casos, el background-color asignado a ellos es sólo por el bien de una demostración más clara.

Primer método:

table{border-spacing:15px}
td{background-color:#00eb55;padding:10px;border:0}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>

Segundo método:

table{border-collapse:collapse}
td{background-color:#00eb55;padding:10px;border:15px solid #fff}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>

Respondido 27 Feb 21, 19:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.