Tại sao chúng ta không nên sử dụng <bảng> trong thiết kế?


41

Một số lý do rõ ràng và hợp lý cho lý do tại sao chúng ta không nên thiết kế trang web với các bảng? Đâu là lợi ích, điều gì đã thúc đẩy ý tưởng này trong ngành? Khi nào thì dùng được bàn?



Google sử dụng chính các bảng, ví dụ trong adwords. Với hàng triệu nhà quảng cáo đăng nhập và làm việc với dữ liệu động, việc mã hóa xung quanh <table>lưới CSS sẽ dễ dàng hơn nhiều . Tôi sử dụng datatables.net cho một vài ứng dụng và bạn có thể thấy danh sách những người sử dụng plugin jquery đó trên trang web của họ. Rất nhiều trang web vẫn sử dụng bảng vì lý do tốt. Tôi chỉ sử dụng các bảng mặc dù khi làm việc với nhiều dữ liệu động cần được sắp xếp theo cột được phân trang, v.v., nhưng không phải cho bố cục trang, đó là những gì CSS dành cho.
Anagio

Câu trả lời:


71

1) Bảng không nên được sử dụng cho bố cục trang vì chúng là:

  • Chậm kết xuất vì trình duyệt cần tải xuống nhiều nhất - nếu không phải tất cả - của bảng để hiển thị đúng

  • Chúng yêu cầu nhiều HTML hơn so với bố cục không có bảng, có nghĩa là tải và kết xuất chậm hơn, cũng như việc sử dụng băng thông tăng lên

  • Chúng có thể là một cơn ác mộng để duy trì vì chúng có thể nhanh chóng trở nên phức tạp

  • Họ có thể phá vỡ sao chép văn bản

  • Chúng ảnh hưởng tiêu cực đến trình đọc màn hình và có thể khiến một số người dùng không thể truy cập nội dung của bạn

  • Chúng không linh hoạt như sử dụng đánh dấu ngữ nghĩa thích hợp

  • Chúng không bao giờ có ý định được sử dụng cho bố cục trang

  • Làm cho các bảng thành một bố cục đáp ứng là rất khó kiểm soát

2) Sử dụng bảng cho dữ liệu dạng bảng. Đó là những gì bảng dành cho.

Xem thêm: Tại sao mọi người tạo bảng với div?


1
Đúng vậy, vì vậy nếu tôi có một phần về chi tiết liên hệ thì có thể có bảng, nhưng bố cục đồ họa của trang nằm trong DIV hoặc một cái gì đó tương tự với chúng. Tôi đã thấy một số nhà thiết kế tránh tất cả chúng cùng nhau trong các khu vực có dữ liệu dạng bảng và sử dụng DIV.
Ẩn danh

18
Các nhà thiết kế tránh các bảng hoàn toàn không biết họ đang làm gì. Họ đã hiểu nhầm "không sử dụng bảng cho bố cục trang" nghĩa là gì.
John Conde

1
Thật là ngu ngốc khi tránh các bảng hoàn toàn, nhưng có những lựa chọn thay thế hợp pháp cho các bảng để biết thông tin liên hệ. Danh sách định nghĩa là một lựa chọn tốt, đặc biệt là khi triển khai một hCard: cagintranet.com/archive/,
Lèse majesté

2
@Litso: Bạn nên đọc thông số kỹ thuật riêng của W3C DLtrước khi bạn quyết định nó tốt hay không tốt.
Lèse majesté

1
Ngoài ra còn có một vị trí: thẻ CSS bảng để tạo bố cục dựa trên bảng mà không đặt chúng vào HTML. Có một vài trường hợp thích hợp trong đó các bảng vẫn là lựa chọn tốt nhất / dễ nhất cho bố cục. Hãy xem @ css-tricks.com/fluid- thong-equal-height-columns để xem tôi muốn nói gì.
Evan Plaice

8

Bảng dành cho dữ liệu dạng bảng, không phải thiết kế. Mọi người thường hiểu sai động lực đằng sau việc tạo ra các trang "không cần thẻ".

Thật sai lầm khi sử dụng các bảng để tạo bố cục của bạn. Bạn nên sử dụng các yếu tố khác để bố trí (div, danh sách, phần, bài viết, tiêu đề, chân trang, phụ, v.v.). Và bạn có thể đạt được các hiệu ứng tuyệt vời với HTML / CSS tối thiểu (để lại mã của bạn có ý nghĩa về mặt ngữ nghĩa, nhẹ và dễ bảo trì).

Tất nhiên, dữ liệu dạng bảng phải nằm trong phần tử bảng. Nếu bạn muốn, bạn có thể cải thiện ngay cả ngữ nghĩa của các bảng bằng cách thêm thead, t feet, tbody, th, chú thích, v.v ... Tất cả những yếu tố này được dự định sẽ được sử dụng với các bảng và tin tôi, chúng có thể làm cho bảng của bạn tự mô tả hơn nhiều .

Vì vậy, điều là, không đi với thiết kế dựa trên bảng và sử dụng bất kỳ giải pháp HTML / CSS nào phù hợp. Bắt đầu từ đánh dấu ngữ nghĩa HTML, sau đó xây dựng thiết kế bằng CSS. Điều này sẽ giữ bất cứ ai an toàn. Sử dụng điều này như là một quy tắc của ngón tay cái.


3

Các bảng được cho là chứa dữ liệu, và không phải là các yếu tố thiết kế.


3

Bảng chỉ nên được sử dụng khi hiển thị dữ liệu dạng bảng. Nếu không, chúng thường là một lựa chọn kém để hiển thị.


Tại sao các downvote?
Chris Ballance

0

Nguyên nhân thực sự để không sử dụng bảng là:

Bố cục mặc định của bảng là: table-layout:fixed

Điều này cho trình duyệt phân tích bảng và sửa các ô để chứa các phần tử bên trong chúng, việc này sẽ mất một thời gian. (đây là lý do tại sao các bảng rất tốt cho dữ liệu phức tạp)

Dòng dưới cùng: bảng sẽ hiển thị sau khi tất cả nội dung bên trong nó được hiển thị, trái ngược với khi sử dụng các phần tử DIV ví dụ.


-3

Tôi sử dụng các bảng cho cấu trúc thiết kế web trong chất lỏng trộn với cố định và tôi biết nhiều bảng nói là dành cho những người khác nói rằng chúng dành cho những người học cũ, những người luôn nói rằng DIVS là tốt nhất nhưng sự thật là các bảng tốt hơn cho một số thứ và DIVS cho điều khác.

Điều gì tốt hơn a <br>hay a <p></p>? Giống nhau cả thôi

Tôi và các bảng cũ trong thiết kế web mới 2015 của tôi có thể đá với bất kỳ ai có chiều rộng 100% di động thân thiện của tôi được trộn với 2 cột bên 200 pixel mỗi cột.

Rõ ràng bên trong các bảng là xấu khi đặt ngày càng nhiều bảng, đó là nơi DIVS có ích. Bảng có thể làm những điều mà div không thể và div có thể làm những điều mà bảng không thể.

Những người nói bố trí bảng mặc định là cố định? Tôi cho bạn một ví dụ

<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="200">left</td>
    <td width="100%">middle</td>
    <td width="200">right</td>
  </tr>
</table>

Bạn có thấy tiềm năng bây giờ không? Hãy xem nó trên PC và điện thoại di động. À vâng và tôi thậm chí không cần bootstrap.

Bây giờ để làm điều tương tự với div, bạn phải viết rất nhiều mã CSS để hiển thị căn chỉnh float và crap. Ai viết ít mã? Tôi! Khách hàng cần gì? Một chàng trai kết thúc một trang trong 1 năm hoặc trong 1 tháng?

Bây giờ hãy cải thiện thiết kế với div

<div style="width:100%; min-width:1000px; height:200px;">top menu or nav</div>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="200">left</td>
    <td width="100%">middle</td>
    <td width="200">right</td>
  </tr>
</table>
<div style="width:100%; min-width:1000px; height:200px;">top menu or nav</div>

Thật đẹp, bố trí thiết kế 5 cột bằng cách sử dụng div và bảng.

Câu trả lời của bạn là: cả hai cùng hoạt động tốt hơn và nhanh hơn và nó sẽ trông tốt trên mọi thiết kế ngay cả trên TV và điện thoại di động nhỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.