<table class="invert">
  <thead>
    <tr>
      <th></th>
      <th>Time</th>
      <th>Time</th>
      <th>Time</th>
      <th>Time</th>
      <th>Time</th>
      <th>Time</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Date</th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td>
        <div class="evt event1">Event 1</div>
      </td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td></td>
      <td>
        <div class="evt event2">Event 2</div>
      </td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td></td>
      <td></td>
      <td>
        <div class="evt event3">Event 3</div>
      </td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td></td>
      <td></td>
      <td></td>
      <td>
        <div class="evt event4">Event 4</div>
      </td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <th>Date</th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </tbody>
</table>
/* This part would be in a static external css*/

table.invert {
  display: block;
  width: 95%;
  margin: 0 auto;
}

.invert tbody,
.invert thead,
.invert tr {
  display: inline-block;
  /* Make rows display side by side */
}

.invert th,
.invert td {
  display: block;
  /* Make cells stack vertical in the rows */
  outline: dashed 1px #aaa;
  position: relative;
  overflow: visible;
  min-width: 5em;
  min-height: 1.5em;
}

.invert th {
  background: #cef
}

.invert thead th {
  background: #cfe
}

.evt {
  position: absolute;
  width: 90%;
  top: 0;
  right: 2px;
  background: #faa;
  outline: solid 1px #f00;
}

@media screen and (max-width: 48em) {
  /* On the small screen */
  .invert tr {
    display: block;
    /* Make rows stack vertical */
  }
  .invert thead {
    display: none
    /* Hide the head */
  }
  .invert tbody {
    width: 100%
  }
  .invert td::before {
    /* Replace heads with pseudo elements,
    in real life this would use dynamically created data attribute */
    content: 'Time:';
    font-weight: bold;
    background: #cfe;
  }
  .evt {
    width: auto;
    left: 5em;
  }
}


/* This part would be churned out here dynamically from your data */

.event1 {
  height: 6em;
}

.event2 {
  height: 2em;
}

.event3 {
  height: 5em;
}

.event4 {
  height: 3em;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.