max
max

Reputation: 393

change style to header in html table

I am learning css writing styles for an html table and I was wondering how I can remove the borders of the blank cell for the first row of my header, in addition to rounding the edges for the cells estimated amount and total.

I leave the html and css in addition to a thread of reproduction:

table {
  border: 1px solid #ccc;
  border-collapse: collapse;
  margin: 0;
  padding: 0;
  width: 100%;
  table-layout: fixed;
}

.blank {
  background-color: #FFFFFF; 
}

table tr {
  background-color: #f8f8f8;
  border: 2px solid #ddd;
  padding: .35em;
}

table th,
table td {
  padding: .625em;
  text-align: center;
}

table th {
  font-size: .85em;
  letter-spacing: .1em;
  text-transform: uppercase;
}
<table>
  <thead>
    <tr>
      <th class="blank"></th>
      <th colspan="2">estimated amount</th>
      <th>total</th>
    </tr>
    <tr>
      <th scope="col">Account</th>
      <th scope="col">Expense</th>
      <th scope="col">Income</th>
      <th scope="col">Diff</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$3,190</td>
      <td data-label="Income">$1,000</td>
      <td data-label="Diff">$2,190</td>
    </tr>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$5,000</td>
      <td data-label="Income">$1,000</td>
      <td data-label="Diff">$4,000</td>
    </tr>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$7,000</td>
      <td data-label="Income">$4,000</td>
      <td data-label="Diff">$3,000</td>
    </tr>
  </tbody>
</table>

Upvotes: 2

Views: 2017

Answers (1)

Mehdi Ayari
Mehdi Ayari

Reputation: 548

this is a tricky one because applying border-radius while having the value of border-collapse set to collapse will not work the way you wanted it to.

My solution for you is to create your borders using CSS like this :

table {
 
  border-collapse: separate;
  border-spacing: 0;
  margin: 0;
  padding: 0;
  width: 100%;
  table-layout: fixed;
}


    
th ,td {
  border-right:2px solid #ddd;
  border-bottom: 2px solid #ddd;
  background-color: #f8f8f8;
  padding: .35em;
}

#tr1 th:last-child {
    border-top: 2px solid #ddd;
}

#tr1 th:nth-child(2) {
  border-left: 2px solid #ddd;
  border-top: 2px solid #ddd;
}

#tr2 th:first-child{
    border-top: 2px solid #ddd;
}

#tr2 th:first-child{
    border-left: 2px solid #ddd;
}

tr td:first-child{
    border-left: 2px solid #ddd;
}

.blank {
  background-color: #FFFFFF;
  border: none;
}

.estimatedAmountClass {
   border-top-left-radius: 40px;
}

.totalClass {
   border-top-right-radius: 40px;
}

table th,
table td {
  padding: .625em;
  text-align: center;
}

table th {
  font-size: .85em;
  letter-spacing: .1em;
  text-transform: uppercase;
}
<table >
  <thead>
    <tr id="tr1">
      <th class="blank"></th>
      <th class="estimatedAmountClass" colspan="2">estimated amount</th>
      <th class="totalClass">total</th>
    </tr>
    <tr id="tr2">
      <th scope="col">Account</th>
      <th scope="col">Expense</th>
      <th scope="col">Income</th>
      <th scope="col">Diff</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$3,190</td>
      <td data-label="Income">$1,000</td>
      <td data-label="Diff">$2,190</td>
    </tr>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$5,000</td>
      <td data-label="Income">$1,000</td>
      <td data-label="Diff">$4,000</td>
    </tr>
    <tr>
      <td data-label="Account">Visa - 3412</td>
      <td data-label="Expense">$7,000</td>
      <td data-label="Income">$4,000</td>
      <td data-label="Diff">$3,000</td>
    </tr>
  </tbody>
</table>

Upvotes: 1

Related Questions