CSS ile Responsive Tablo Yapımı

Artık CSS ile yazacağımız kodların responsive şekilde olması gerekiyor. Ve verilerin listelenmesinde kullandığımız tablo yapısınında responsive olması gerekiyor.

CSS de responsive yapma işlemlerini genellikle @media tag üslenmektedir bizde @media tagi kullanacağız. Basit bir tablo oluştuyoruz. Ve örnek verilerle dolduyoruz.

Tablomuz;

 <table class="table">
  <th>ID</th>
  <th>Adı</th>
  <th>Soyadı</th>
  <tbody>
  <tr>
    <td data-title="ID">1</td>
    <td data-title="Adı">Ali</td>
    <td data-title="Soyad">Rodoplu</td>
  </tr>
  <tr>
    <td data-title="ID">2</td>
    <td data-title="Adı">Kerem</td>
    <td data-title="Soyad">Özer</td>
  </tr>
  <tr>
    <td data-title="ID">3</td>
    <td data-title="Adı">Okan</td>
    <td data-title="Soyad">Bilir</td>
  </tr>
  ...
 </tbody>
 </table>
 <!- Farklı olarak data-title ekliyoruz bu da bizim başlıklarımız dır. 
 CSS Kısmında lazım olacaktır. -->

CSS kodlarımıza geçersek;

 /*table css kodlarımızdır stil kısmında kendinize göre değişiklik yapabilirsiniz.*/
 table,tr,th,td{border:none}
 .table{ width: 100%; display: table;}
 .table tbody>tr:nth-child(odd)>th,
 .table > tbody > tr:nth-child(odd) > td{background: #f9f9f9}
 .table tbody > tr > td,
 .table tbody > tr > th{padding: 10px 10px 10px 20px;}
 .table tbody > tr > td{border-top:1px solid #ddd;}
 th{text-align:left; color: #688a7e;    font-weight: bold;}
 .table > tbody > tr:hover > td, .table > tbody > tr:hover > th{background: #f5f5f5}

 /*ekranın hangi boyutlarında devreye gireceğini belirliyoruz*/
 @media 
 only screen and (max-width: 760px),
(min-device-width: 768px) and (max-device-width: 1024px)  {

    table, thead, tbody, th, td, tr { 
        display: block; 
    }
    /*tablomuzun thead gizliyoruz*/
    .table thead tr { 
        position: absolute;
        top: -9999px;
        left: -9999px;
    }

    .table tr { border: 1px solid #ccc; }

    .table td { 
        border: none;
        border-bottom: 1px solid #eee; 
        position: relative;
        padding-left: 50%!important; 
    }
    /*Burada td:before data-title ların css'i oluyor*/
    .table td:before { 
        position: absolute;
        top: 6px;
        left: 6px;
        width: 45%; 
        padding-right: 10px; 
        white-space: nowrap;
        font-weight:bold;
    }
   /*data-title valulerini alarak sütünümuza eklemiş oluyoruz*/
  .table td:before { content: attr(data-title);
 }
}

Ve Responsive Tablomuz: