Khi bạn áp dụng border-collapse: collapse;
vào một bảng để "kết hợp" các đường viền của ô với nhau, nó bắt đầu gây ra các vấn đề trong việc xác định độ rộng của các ô bảng trong Javascript. Ví dụ: xem trang này:
http://game-point.net/misc/browserTests/scratchpads/jsTableWidth/
Có hai bảng, một bảng có đường viền bị sập và một không có. Nếu bạn bấm vào một hàng trong một không có đường viền bị sụp đổ, hàm innerWidth và outerWidth của jQuery sẽ báo cáo những gì tôi mong đợi (chiều rộng nội dung và nội dung cộng với chiều rộng đường viền tương ứng; không có đệm).Tại sao chiều rộng Javascript của một ô trong một pixel quá ngắn?
Tuy nhiên, nếu bạn nhấp vào một hàng trong bảng có đường viền bị thu hẹp, bạn sẽ nhận được hành vi không nhất quán của trình duyệt, đặc biệt là trên thuộc tính clientWidth
. Trong Firefox, clientWidth
giống với width()
. Trong IE và Chrome, nó cao hơn 1 pixel và trong Opera, nó giống với width()
, nhưng Opera width()
quá nhỏ. Trên thực tế, width()
là một pixel quá nhỏ trong tất cả các trình duyệt mà tôi đã thử nghiệm ngoại trừ Firefox. Vì vậy, nếu bạn chụp ảnh màn hình và nội dung thực sự là 80px, width()
là 79px (jQuery lấy nó từ giá trị CSS được tính). Tại sao điều này?
Tôi muốn có chiều rộng của nội dung thực tế. Tôi dường như không thể sử dụng width()
vì chỉ Firefox có quyền đó với đường viền bị sập. Tôi không thể sử dụng outerWidth()
vì bao gồm các đường viền (hoặc có thể chỉ là một đường viền, vì nó chỉ lớn hơn 1px so với chiều rộng nội dung thực tế). Tôi không thể sử dụng clientWidth
vì giá trị của nó không nhất quán giữa các trình duyệt. Tôi nên làm gì và tại sao width()
1px quá ngắn trong hầu hết các trình duyệt khi đường viền bị thu hẹp?
sử dụng phương thức '.wrapInner()' để bao bọc nội dung của ô bằng div và nhận chiều rộng của ô. http://api.jquery.com/wrapInner/ – charlietfl
Nhưng điều đó có nghĩa là bạn cần phải chèn các phần tử DOM trên khắp nơi để bọc nội dung ... không chính xác lý tưởng? – Jez
bảng có thể là một nhức đầu, tại sao bạn nghĩ rằng chúng không được sử dụng để bố trí nữa? Nội dung đóng gói là giải pháp để tạo hoạt ảnh cho các hàng trong đó. Hãy thử làm động một hàng mà không có nó ... kết quả là khủng khiếp – charlietfl