2010-09-08 35 views
9

Giả sử tôi có một bảng html với chiều rộng được khai báo là 750px. Nó có 5 cột và mỗi cột có chiều rộng là 50px, được khai báo bằng cách sử dụng css (tất cả các td có chiều rộng 50px). Rõ ràng, tổng chiều rộng của các cột là 250px nhỏ hơn 750px.Chiều rộng cột được tính toán khác với chiều rộng khai báo css cho cột. Trình duyệt quyết định chiều rộng như thế nào?

Khi trình duyệt hiển thị bảng, mỗi cột có chiều rộng được tính khác nhau. Tôi có một cột chỉ có 5 khoảng trắng nhưng chiều rộng được tính là hơn 100px (nhiều hơn 5  ).

Tất cả các cột đều phù hợp với văn bản đi kèm cùng với một số khoảng trống thừa. Không có chiều rộng cột được mã hóa cứng nào có trong đánh dấu. Chỉ cần một 50px trong css cho 'td'.

Trình duyệt tính toán độ rộng kết xuất của mỗi cột như thế nào?

Trả lời

4

Khi bạn đặt chiều rộng của cột bảng, nó chỉ là chiều rộng tối thiểu được đề nghị, mà trình duyệt cố gắng tôn trọng nếu có thể. Chiều rộng thực tế của các cột được tính toán từ kích thước nội dung của chúng, chia không gian còn lại giữa các cột.

Nếu bất kỳ cột nào cuối cùng sẽ hẹp hơn chiều rộng bạn đã chỉ định, trình duyệt sẽ cố điều chỉnh nếu có không gian trống trong các cột khác, nhưng trong trường hợp của bạn, các cột đã ở mức tối thiểu.

Thuật toán thực tế để tính toán kích thước ô khác với trình duyệt cho trình duyệt, điều này có nghĩa là các cột sẽ hơi khác tùy thuộc vào trình duyệt bạn sử dụng.

+0

Nội dung dài nhất trong mỗi cột nhỏ hơn chiều rộng được tính toán. Mỗi cột có thêm không gian. Không có cột nào hẹp hơn chiều rộng của tôi. Trình duyệt có cố gắng ném thêm các khoảng trống trong mỗi cột * bằng nhau * để có được chiều rộng bảng không? Từ khóa là như nhau ở đây. Tôi có một cột chỉ có không gian mã hóa cứng, không có văn bản, nhưng nó kết thúc bằng một cột rộng hơn tổng của các khoảng trắng. –

+0

@Tony_Henrich: Có, không gian thừa được chia đều hoặc tương ứng, trên các cột, theo một số thuật toán không xác định trong trình duyệt. – Guffa

0

Điều này được gọi là mô hình hộp. đệm và đường viền được thêm vào chiều rộng phần tử. Vì vậy, một phần tử DIV với padding: 10px; width: 50px; border: 1px solid black; thực sự là 72 pixel chiều rộng. Tôi mong đợi td của bạn có một biên giới hoặc đệm?

+1

Thu hẹp biên giới cũng có hiệu lực khi giao dịch với các bảng. – You

+0

Không có đường viền. Không đệm. Không có khoảng trắng. –

1

Trình duyệt cố gắng vừa với các ô trong chiều rộng bảng, mở rộng/hợp đồng td khi cần.

Vì vậy, bạn đặt bảng ở 750px nhưng chỉ cho chiều rộng 250px. Trong trường hợp đó, trình duyệt sẽ sử dụng lược đồ giãn cách truyền thống của nó ở đâu, dựa trên nội dung trong mỗi ô, cố gắng không gian đồng đều ra ngoài các ô.

Bạn có thể đọc thêm về cách hoạt động của tính năng này here.

13

Bạn cần sử dụng kiểu bố cục bảng. Có 3 giá trị có thể có:

  • tự động. Mặc định. Chiều rộng phụ thuộc vào nội dung.
  • cố định. Phụ thuộc vào chiều rộng đã nêu trong css.
  • kế thừa. Thừa kế giá trị từ cha mẹ của nó.

Trong trường hợp của bạn, bạn cần sử dụng bố cục bảng: cố định; trên phần tử bảng của bạn.

Các vấn đề liên quan