CSS - border-spacing Property



CSS border-spacing property sets the distance between cells in a table. For this property to show its effect, the table must be rendered using the border-collapse 'separate' model.

Syntax

border-spacing: length | initial | inherit;

Property Values

Value Description
length It specifies the distance between the cells. Any length unit. One value applies spacing to both horizontal and vertical directions, if two values are given, first value applies spacing along the horizontal axis, the second applies to the vertical axis.
initial This sets the property to its default value.
inherit This inherits the property from the parent element.

Examples of CSS Border Spacing Property

The following examples explain the border-spacing property with different values.

Border Spacing Property with Length Values

To set table cell spacing, we can use length values (e.g., 10px, 30px 14px etc.). A single value applies spacing both horizontally and vertically, while two values specify horizontal and vertical spacing respectively. These are shown in the following example.

Example

<!DOCTYPE html>
<html>

<head>
   <style>
      table,
      td,
      th {
         border: 1px solid black;
         padding: 5px;
         text-align: center;
         background-color: lightblue;
      }
      #single-value {
         border-collapse: separate;
         border-spacing: 17px;
      }

      #two-values {
         border-collapse: separate;
         border-spacing: 17px 45px;
      }
   </style>
</head>

<body>
   <h2>
      CSS border-spacing property
   </h2>
   <h4>
      border-spacing: Single Value (17px)
   </h4>
   <p>
      Here, single value 17px has been used,
      it applies spacing in both horizontal
      and vertical directions. The 'border-collapse'
      property is set to separate.
   </p>
   <table id="single-value">
      <tr>
         <th>Name</th>
         <th>Subject</th>
         <th>Marks</th>
      </tr>
      <tr>
         <td>John</td>
         <td>English</td>
         <td>76</td>
      </tr>
      <tr>
         <td>Aman</td>
         <td>Maths</td>
         <td>85</td>
      </tr>
      <tr>
         <td>Priya</td>
         <td>Chemistry</td>
         <td>90</td>
      </tr>
   </table>

   <h4>
      border-spacing: Two values (17px 45px)
   </h4>
   <p>
      Here, two values have been used
      17px and 45px. The 17px spacing is applied
      horizontally and 45px spacing is applied 
      vertically. The 'border-collapse' property
      is set to separate.
   </p>
   <table id="two-values">
      <tr>
         <th>Name</th>
         <th>Subject</th>
         <th>Marks</th>
      </tr>
      <tr>
         <td>John</td>
         <td>English</td>
         <td>76</td>
      </tr>
      <tr>
         <td>Aman</td>
         <td>Maths</td>
         <td>85</td>
      </tr>
      <tr>
         <td>Priya</td>
         <td>Chemistry</td>
         <td>90</td>
      </tr>
   </table>

</body>

</html>

Border Spacing Property with Initial Value

To not have any spacing between the table cells, we can use the initial value.The initial value removes the 2px default spacing. This is shown in the following example.

Example

<!DOCTYPE html>
<html>

<head>
   <style>
      table,
      td,
      th {
         border: 1px solid black;
         text-align: center;
         background-color: lightgreen;
      }

      #default {
         border-collapse: separate;
      }

      #initial {
         border-collapse: separate;
         border-spacing: initial;
      }
   </style>
</head>

<body>
   <h2>
      CSS border-spacing property
   </h2>
   <h4>
      Default spacing of 2px
   </h4>
   <p>
      Here, the 'border-spacing' property
      has not been given any value but still
      some space is provided between the cells.
      This is the default 2px space.
   </p>
   <table id="default">
      <tr>
         <th>Name</th>
         <th>Subject</th>
         <th>Marks</th>
      </tr>
      <tr>
         <td>John</td>
         <td>English</td>
         <td>76</td>
      </tr>
      <tr>
         <td>Aman</td>
         <td>Maths</td>
         <td>85</td>
      </tr>
      <tr>
         <td>Priya</td>
         <td>Chemistry</td>
         <td>90</td>
      </tr>
   </table>

   <h4>
      border-spacing: Initial
   </h4>
   <p>
      Here, initial value has been used,
      it sets 0 spacing between the table cells
      as shown here.
   </p>
   <table id="initial">
      <tr>
         <th>Name</th>
         <th>Subject</th>
         <th>Marks</th>
      </tr>
      <tr>
         <td>John</td>
         <td>English</td>
         <td>76</td>
      </tr>
      <tr>
         <td>Aman</td>
         <td>Maths</td>
         <td>85</td>
      </tr>
      <tr>
         <td>Priya</td>
         <td>Chemistry</td>
         <td>90</td>
      </tr>
   </table>

</body>

</html>

Supported Browsers

Property Chrome Edge Firefox Safari Opera
border-spacing 1.0 8.0 1.0 1.0 4.0
css_reference.htm
Advertisements