Skip to main content

Hướng dẫn tạo thanh cuộn trong bảng bằng HTML và query

Trong lập trình đôi lúc ta muốn lấy dữ liệu ra và cho nó vào bảng để hiển thị. Vấn đề đặt ra là khi dữ liệu nhiều quá thì trang web của chúng ta sẽ dài thêm, phá đi bố cục ban đầu của ta. Để vẫn giữ được bố cục và load dữ liệu ra bảng người ta thường dùng là phân trang. Nhưng đôi lúc không muốn phân trang, ta sẽ tạo thêm thanh cuộn trong phần thân của bảng.

Để bắt đầu tạo thanh cuộn, trước hết ta sẽ tạo ra trang HTML với nội dung là bảng và các cột như sau:
chúng ta tạo trang HTML với tên index.html với nội dung:
-------------------------------------------------------------------------------------------------
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Index</title>
</head>

<body>
<table class="scroll">
    <thead>
        <tr>
            <th>Head 1</th>
            <th>Head 2</th>
            <th>Head 3</th>
            <th>Head 4</th>
            <th>Head 5</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Lorem ipsum dolor sit amet.</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
        <tr>
            <td>Content 1</td>
            <td>Content 2</td>
            <td>Content 3</td>
            <td>Content 4</td>
            <td>Content 5</td>
        </tr>
    </tbody>
</table>
</body>
</html>
-------------------------------------------------------------------------------------------------
Nội dung của trang html chủ yếu là chứa nội dung của bảng của chúng ta. Thực thi thì có kết quả như sau:
Tiếp theo ta sẽ tạo CSS để thêm thanh cuộn cho bảng ở trên, ta vào trên dòng </head> thêm nội dung như sau:
--------------------------------------------------------------------------------------------------
<style>
table.scroll {
    /* width: 100%; */ /* Optional */
    /* border-collapse: collapse; */
    border-spacing: 0;
    border: 2px solid black;
}

table.scroll tbody,
table.scroll thead { display: block; }

thead tr th { 
    height: 30px;
    line-height: 30px;
    /* text-align: left; */
}

table.scroll tbody {
    height: 100px;
    overflow-y: auto;
    overflow-x: hidden;
}

tbody { border-top: 2px solid black; }

tbody td, thead th {
    /* width: 20%; */ /* Optional */
    border-right: 1px solid black;
    /* white-space: nowrap; */
}

tbody td:last-child, thead th:last-child {
    border-right: none;
}
</style>
--------------------------------------------------------------------------------------------------
Ta sẽ thực hiện run để xem kết quả:


Ok vậy là đã xuất hiện thanh cuộn như chúng ta mong muốn, nhưng vẫn còn 1 vấn đề là các cột header và body nó không ngay thành 1 cột. bây giờ chúng ta sẽ thêm 1 chút <script> để nó được như mong muốn. Bây h ta vào trước dòng </body> thêm vào đoạn sau:
--------------------------------------------------------------------------------------------------
 <script src="http://code.jquery.com/jquery-1.9.0.js"></script>
--------------------------------------------------------------------------------------------------
Nội dung của đoạn này là thêm Jquery vào để chúng ta thực hiện. Tiếp theo ta sẽ xử lý cho các cột nay ngắn lại. tiếp tục ta thêm đoạn code này dưới đoạn code vừa thêm ở trên, nội dung như sau:
--------------------------------------------------------------------------------------------------
<script>
// Chọn vào class của bảng, ví dụ ở đây class là scroll
var $table = $('table.scroll'),
    $bodyCells = $table.find('tbody tr:first').children(),
    colWidth;

// nhận về thông tin khi của sổ thay đổi kích thước
$(window).resize(function() {
    // Get the tbody columns width array
    colWidth = $bodyCells.map(function() {
        return $(this).width();
    }).get();
    
    // Thiết đặt giá trị cho cột header
    $table.find('thead tr').children().each(function(i, v) {
        $(v).width(colWidth[i]);
    });    
}).resize();
--------------------------------------------------------------------------------------------------
Ok vậy là ta đã hoàn thành, công việc cuối cùng là hãy run lên để xem kết quả nhé:



Vậy là chúng ta đã hoàn thành được như ý muốn. Các bạn có thể tải soucre về đẻ chạy thử theo link sau: Nhấp vào đây để tải về

Link dự phòng: https://mega.co.nz/#!6wI0RIQZ!3HVpg8ZTFq1ifcB9lrwuAhB-hTDQNCyq3vT0vT5_0e8

lưu ý: cần phải có internet để có thể chạy được file jquery nhé. Chúc các bạn thành công.



Popular posts from this blog

Tìm hiểu về margin và padding

Để có một blog đẹp chúng ta phải chỉnh sửa mã nguồn cho các thành phần trở nên cân đối và hài hòa. Bài viết này sẽ hướng dẫn các bạn làm quen với margin và padding,  canh lề và canh đệm. Những ai đã từng học qua CSS thì không lạ gì với hai tag này.

Lọc các ký tự xấu (chửi tục) và thay thế chúng sử dụng mảng trong PHP

Trong một số diễn đàn, có một số bạn sử dụng một số từ thô tục để nói với nhau hoặc chửi nhau. Ở bài viết này, mình sẽ hướng dẫn các bạn tạo một hàm cơ bản để lọc các từ ngữ thô tục và thay thế chúng bằng các từ ngữ dễ thương hơn. Bằng cách tương tự như  Thay thế ký tự với Icon sử dụng mảng trong PHP  ta sẽ tiếp tục sử dụng cách thức trên đối với việc lọc các từ ngữ thô tục và thay thế chúng. VD: khi một bạn chat "Mày bị khùng, đm mày, đồ thằng chó". <?php function badWordFilter($data){ $originals = array( "Khùng" , "đm" , "chó" ); $replacements = array( "dễ thương" , "yêu" , "đẹp trai" ); $data = str_ireplace($originals,$replacements,$data); return $data; } $myData = " Mày bị khùng, đm mày, đồ thằng chó " ; $cleaned = badWordFilter($myData); echo $cleaned; //Mày bị dễ thương, yêu mày, đồ thằng đẹp trai ?> Thật là dễ dàng phải khôngkhông, tại sao không thử nhỉ.