Tôi biết có nhiều đối số tốt khác nhau thích vị trí CSS trên bố cục dựa trên bảng. Những gì tôi tự hỏi là liệu các mô hình CSS là hoàn thành (giả sử một trình duyệt tương đối hiện đại) đối với tất cả các khả năng của bảng. Có bố cục nào mà các bảng có thể đạt được là không thể hoặc không thực tế với CSS?Những bảng nào có thể làm việc định vị CSS đó không thể?
Trả lời
Tôi sẽ chuyển sang bố cục dựa trên css nếu có thể. Các đối số chuyên đề là chính xác, nhưng có những cân nhắc thực tế.Bàn sẽ:
- hoàn toàn ngăn chặn 'bọc phao', nơi một div sẽ giảm xuống dòng tiếp theo vì không có đủ không gian cho nó
- cung cấp cho bạn các cột cùng chiều cao
- cho phép bố trí năng động, nơi rộng và chiều cao không biết cho đến khi thời gian chạy
- cung cấp colspans và rowspans
- giảm số lượng SO đặt câu hỏi làm thế nào để làm công cụ mà không có bàn :)
Có các thuộc tính hiển thị css (ô bảng, vv) bắt chước một số điều này, nhưng tôi không tin rằng sự hỗ trợ này đã đủ rộng để sử dụng chúng (trừ khi bạn có thể kiểm soát lựa chọn trình duyệt của người dùng).
Trang web tôi thực hiện yêu cầu độ rộng cột động cạnh tranh trong bố cục. Nhiều khách hàng sử dụng cùng một mẫu trang web và tôi không biết họ sẽ đưa gì vào trình đơn hoặc tiêu đề trang hoặc các ô nội dung. (Và không có ý tưởng gì họ sẽ thấy hấp dẫn, đó là một vấn đề khác ...) Sử dụng một bảng bên ngoài duy nhất để đặt ra các phần chính của trang web cho phép sự linh hoạt tôi cần mà không lo lắng rằng một menu hơi quá rộng sẽ đẩy hộp nội dung chính xuống hàng tiếp theo hoặc màu nền đó sẽ không lấp đầy chiều cao yêu cầu.
Trong thế giới hoàn hảo (với tôi), chúng tôi sẽ có <table>
s cho dữ liệu dạng bảng và một tập hợp thẻ gần giống hệt cho bố cục - gọi nó là <layout>
(cùng với thẻ ô và hàng tương ứng). Hoặc, thêm thuộc tính 'chế độ' vào thẻ <table>
- các giá trị sẽ là 'dữ liệu' và 'bố cục' để trình đọc màn hình và công cụ tìm kiếm biết phải làm gì. Có lẽ trong html 6 ...
Chỉnh sửa: Tôi muốn thêm vào, liên quan đến điều 'bọc nổi' - có câu hỏi hiện tại về SO với câu trả lời hoạt động khá tốt here. Nó không phải là hoàn hảo, và quá tôi nó quá phức tạp, nhưng nó sẽ giải quyết vấn đề trong nhiều trường hợp.
Bảng có nghĩa là và nên được sử dụng cho dữ liệu dạng bảng chứ không phải cho cấu trúc. Cá nhân tôi thấy các bảng được sử dụng như một cách dễ dàng, và tôi chưa bao giờ gặp phải một tình huống không thể được giải quyết bằng CSS.
Bảng chắc chắn dễ dàng hơn cho các cột định vị dọc và chiều cao đầy đủ, nhưng một lần nữa điều này có thể được khắc phục bằng CSS.
Tôi không phải là người ủng hộ các góc cắt trong lập trình nhưng có những trường hợp "hack" tốt hơn là làm điều gì đó "lý tưởng". Bảng Html hoạt động. Trong mọi trình duyệt. Luôn luôn. Họ rất đơn giản để hiểu và duy trì. CSS là đối diện của điều này khi nói đến đặt ra divs. – Nemi
@Nemi - Boo! Vậy thì tiêu chuẩn cho là gì? –
+ -0 Tôi hoàn toàn không đồng ý. Có * là * các tình huống không thể xử lý được nếu không có bảng hoặc JavaScript. Các nhà thiết kế tiêu chuẩn CSS đã làm một công việc kém trong việc cung cấp các lựa chọn thay thế cho 'bảng' để sử dụng trong các bố trí - tại sao, tôi không biết.Đối với "cách dễ dàng", tôi đưa nó cho bạn rằng khi lựa chọn giữa một dòng năm '
+0 cho đầu tiên, -1 cho thứ 2 và thứ 3, +1 cho thứ 4 và thứ năm. : D – ANeves
@sr pt: Tôi vui vì bạn đã cho tôi +0 cho lần đầu tiên, thay vì -0 ... Nghiêm túc, tôi đã thấy cách giải quyết một phần cho hầu hết các công cụ này, nhưng không bao giờ cho chiều rộng thực sự động (thứ 3 của tôi). Bạn có gì cho tôi không? – Ray