Yêu cầu thg 8 9, 2017 9:32 SA 3616 0 4
  • 3616 0 4
+4

Làm thế nào để freeze table columns bằng css?

Chia sẻ
  • 3616 0 4

Mình muốn hỏi cách freeze columns, để các columns còn lại có thể scroll ngang được như google sheet https://support.google.com/docs/answer/54813?hl=en Lưu ý là khi set height cho table, nó vẫn phải scroll dọc được nữa (bow)

Mình có html thế này:

<table class="table">
   <caption>Optional table caption.</caption>
   <thead>
      <tr>
         <th>Rank</th>
         <th>First Name</th>
         <th>Last Name</th>
         <th>Username</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <th scope="row">1</th>
         <td>Mark</td>
         <td>Otto</td>
         <td>@mdo</td>
      </tr>
      <tr>
         <th scope="row">2</th>
         <td>Jacob</td>
         <td>Thornton</td>
         <td>@fat</td>
      </tr>
      <tr>
         <th scope="row">3</th>
         <td>Larry</td>
         <td>the Bird</td>
         <td>@twitter</td>
      </tr>
   </tbody>
</table>

Mình muốn cố định cột Rank, còn 3 cột còn lại có thể scroll ngang được, giống như thế này:

4 CÂU TRẢ LỜI


Đã trả lời thg 8 9, 2017 9:52 SA
Đã được chấp nhận
+3

Bạn tham khảo thử nhé Link: http://jsfiddle.net/emn13/YMvk9/

Chia sẻ
thg 8 10, 2017 12:57 SA

Cảm ơn bạn, mình còn muốn khi nhiều hàng hơn, mình sẽ cố định height của table, lúc đó mình muốn table phải scroll dọc được nữa (bow) trong ví dụ trên là do th.headcolposition: absolute; nên nếu set heightoverflow-y: scroll cho div bọc table thì các cột th vẫn không scroll theo hàng tương ứng được.

Avatar Phúc Nguyễn @phucnh.dn.vn
thg 8 10, 2017 1:36 SA

Bạn tham khảo 😃 Cách 1: https://codepen.io/saiidi/pen/mePdqo => ưu tiên dùng cách này hơn, xử lý code backend thoải mái hơn cách 2 Cách 2: http://jsbin.com/nolanole/1/edit?html,js,output

thg 8 10, 2017 2:00 SA

@phucnh.dn.vn tuyệt vời, cảm ơn bạn nhiều (bow), mình sẽ thử 2 cách trên của bạn.

Đã trả lời thg 8 9, 2017 9:55 SA
+2

Mình nghĩ bạn có thể tạo một container chưa table của bạn. Set postition: relative cho container này. Đồng thời sử dụng postition: absolute cho các ô mà thuộc cột mà bạn muốn nó cố định ở phía bên trái. Nếu muốn hiển thị thanh cuộn cho table, bạn có thể set overflow-x: auto hoặc overflow-x: scroll cho container. Bạn nên tìm hiểu thêm về thuộc tính postionoverflow trong css để hiểu rõ tác dụng của 2 thuộc tính này.

  • Position: Căn chỉnh vị trí của cho một element.
  • Overlow: Giúp sử lý khi nội dung bên trong quá lớn gây tràn.
Chia sẻ
Đã trả lời thg 8 24, 2017 9:12 SA
Chia sẻ
Đã trả lời thg 10 1, 2019 4:52 SA
Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí