Bài 12: jQuery Mobile - Tables
Đối với Table rất khó có thể xây dựng responsive bởi vì nó không hiển thị block, inline như các thẻ HTML khác. Trong Bootstrap họ đã nảy xây dựng responsive cho table bằng cách ở màn hình nhỏ table sẽ xuất hiện thanh cuộn kéo ngang nhưng bản thân mình thấy đó không phải là một cách giải quyết tốt.
Nhận thấy được điều này jQuery Mobile đã cung cấp những tính năng hiển thị và ẩn các cột một cách linh động và hiệu quả, hoặc nó tự động hiển thị từ chiều ngang sang chiều dọc để các thông tin có thể hiển thị tốt hơn.
Chúng ta có hai loại responsive chính đó là reflow table và column toggle table.
1. Reflow table responsive trong jQuery Mobile
Trong chế độ này nếu trường hợp dữ liệu hiển thị theo chiều ngang quá dài và không thể thu gọn hơn thì nó sẽ tự động hiển thị sang dạng chiều dọc.
Bài viết này được đăng tại [free tuts .net]
Để tạo table ở chế độ này thì bạn thêm thuộc tính data-role="table"
và class="ui-responsive"
.
Lưu ý rằng để nó hoạt động tesponsive tốt thì ban phải thêm các thẻ thead và tbody đầy đủ, không được sử dụng colspan vì nó không hỗ trợ trong responsive.
Ví dụ: XEM DEMO
<table data-role="table" class="ui-responsive"> <thead> <tr> <th>CustomerID</th> <th>CustomerName</th> <th>ContactName</th> <th>Address</th> <th>City</th> <th>PostalCode</th> <th>Country</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Obere Str. 57</td> <td>Berlin</td> <td>12209</td> <td>Germany</td> </tr> <tr> <td>2</td> <td>Antonio Moreno Taquería</td> <td>Antonio Moreno</td> <td>Mataderos 2312</td> <td>México D.F.</td> <td>05023</td> <td>Mexico</td> </tr> <tr> <td>3</td> <td>Around the Horn</td> <td>Thomas Hardy</td> <td>120 Hanover Sq.</td> <td>London</td> <td>WA1 1DP</td> <td>UK</td> </tr> <tr> <td>4</td> <td>Berglunds snabbköp</td> <td>Christina Berglund</td> <td>Berguvsvägen 8</td> <td>Luleå</td> <td>S-958 22</td> <td>Sweden</td> </tr> </tbody> </table>
2. Column Toggle Table trong jQuery Mobile
Column Toggle sẽ ẩn đi các column khi chiều dài không đủ để hiển thị tất cả. Tất nhiên bạn có thể bật hiển thị nó trở lại thông qua hệ thống Controls của nó. Hệ thống controls sẽ được tự động tạo thông qua nội dung trong thẻ thead
.
Để tạo một table dạng Column Toggle thì bạn phải thêm các thuộc tính data-role="table"
data-mode="columntoggle"
class="ui-responsive"
.
Theo mặc định jQuery Mobile sẽ ẩn Column nằm phía bên trái nhất. Tuy nhiên bạn có thể điều chỉnh thứ tự ẩn thông qua thuộc tính data-priority="1"
. Độ ưu tiên cho 1 là cao nhất và cho 6 là thấp nhất.
Ví dụ: XEM DEMO
<table data-role="table" data-mode="columntoggle" class="ui-responsive" id="myTable"> <thead> <tr> <th data-priority="6">CustomerID</th> <th>CustomerName</th> <th data-priority="1">ContactName</th> <th data-priority="2">Address</th> <th data-priority="3">City</th> <th data-priority="4">PostalCode</th> <th data-priority="5">Country</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Obere Str. 57</td> <td>Berlin</td> <td>12209</td> <td>Germany</td> </tr> <tr> <td>2</td> <td>Antonio Moreno Taquería</td> <td>Antonio Moreno</td> <td>Mataderos 2312</td> <td>México D.F.</td> <td>05023</td> <td>Mexico</td> </tr> <tr> <td>3</td> <td>Around the Horn</td> <td>Thomas Hardy</td> <td>120 Hanover Sq.</td> <td>London</td> <td>WA1 1DP</td> <td>UK</td> </tr> <tr> <td>4</td> <td>Berglunds snabbköp</td> <td>Christina Berglund</td> <td>Berguvsvägen 8</td> <td>Luleå</td> <td>S-958 22</td> <td>Sweden</td> </tr> </tbody> </table>
3. Tùy chỉnh giao diện Table trong jQuery Mobile.
Bạn có thẻ sử dụng các class được cung cấp sẵn trong jQuery Mobile để điều chỉnh giao diện hiển thị cho table. Ví dụ để thêm shadow cho tablet thì ta sử dụng class ui-shadow
.
Hoặc bạn có thể sử dụng CSS riêng để định dạng cho table thông qua các thuộc tính CSS căn bản.
Ví dụ: XEM DEMO
Thêm hiệu ứng shadow:
<table data-role="table" data-mode="columntoggle" class="ui-responsive ui-shadow" id="myTable"> <thead> <tr> <th data-priority="6">CustomerID</th> <th>CustomerName</th> <th data-priority="1">ContactName</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> </tr> <tr> <td>2</td> <td>Antonio Moreno Taquería</td> <td>Antonio Moreno</td> </tr> <tr> <td>3</td> <td>Around the Horn</td> <td>Thomas Hardy</td> </tr> <tr> <td>4</td> <td>Berglunds snabbköp</td> <td>Christina Berglund</td> </tr> </tbody> </table>
Thêm border-bottom cho mỗi hàng:
<style type="text/css"> tr{ border-bottom: solid 1px; } </style>
4. Lời kết
Không giống với Table thông thường rất khó chỉnh responsive, nhưng với jQuery Mobile thì bạn dễ dàng làm điều đó nên nó rất ữu ích khi bạn show dữ liệu đơn giản.
Ngoài table ra thì chúng ta còn một cách khác và thường hay sử dụng nhất đó là Grid, và thành phần này chúng ta sẽ tìm hiểu ở bài tiếp theo.