2011-12-13 45 views
15

Tôi đang tạo nhật ký ứng dụng bằng html và tôi đã gặp phải vấn đề khá khó chịu. Tôi có cách bố trí như sau:CSS: Đặt chiều rộng tối đa trên một bảng

| Action | Result | File path   | 

Ví dụ

| Copy | Success | C:\VeryVeryVeryLongF | 
|  |   | ileName.txt   | 

Cột 1 và 2 chỉ hiển thị nhãn ngắn: nội dung của họ nên ở lại trên cùng một dòng duy nhất. Mặt khác, cột 3 có thể chứa đường dẫn tệp rất dài, nên có nhiều dòng nếu chúng không thể vừa với một dòng.

Để đạt được điều này, tôi đã sử dụng white-space: nowrap; trên các cột đầu tiên và white-space: normal; word-break: break-all; vào cuối cùng. Ngoài ra, bảng có width:100%.

Điều này hoạt động tốt trong Chrome và IE, nhưng không phải trong Firefox: Tóm lại, dường như tôi không thể tìm ra cách để thông báo cho Firefox 8.0 không phóng to cột cuối cùng của bảng, thay vào đó hãy để khoảng văn bản nhiều dòng. Trong ví dụ trước của tôi, Firefox in

| Copy | Success | C:\VeryVeryVeryLongFileName.txt | 

Văn bản trong hai cột đầu tiên có thể khác nhau, vì vậy tôi không thể đặt chiều rộng theo cách thủ công và sử dụng table-layout: fixed. Tôi cũng đã thử đặt max-width trên bàn và gói nó trong một div, không có kết quả.

Xem http://jsfiddle.net/GQsFx/6/ để có ví dụ thực tế =) Làm cách nào để Firefox hoạt động giống Chrome?

+0

Ngoài ra, 'word-wrap: break-word' không hoạt động. –

+0

Liên quan: http://stackoverflow.com/questions/1258416/word-wrap-in-a-html-table, http://stackoverflow.com/questions/138132/using-css-how-can-i-split -a-string-ega-long-url-in-a-table-cell –

+1

Vâng, bây giờ chúng tôi đang lên đến FireFox22, có vẻ như jsfiddle của bạn hiển thị tốt. – Gerrat

Trả lời

0

sử dụng css này

.actions { 
width:100%; 
} 
.actions tr td:nth-child(3) { 
width:200px; 
word-wrap:break-word; 
    display:inline-block; 
} 
+1

Bạn đang sử dụng kích thước cố định cho cột thứ ba, không làm những gì tôi cần: Tôi cần cột thứ ba càng rộng càng tốt. –

-1

max-width là CSS2 hợp lệ nhưng chỉ được hỗ trợ trong NS7, Opera 7 và có lẽ Mozilla. Tôi không tin rằng nó được hỗ trợ trong IE 6.

+2

Đó không phải là những gì mà OP yêu cầu. –

-1

Thử đặt width: auto;. Điều này sẽ cho cho trình duyệt để sử dụng không gian cần thiết ...

+0

Điều đó không thay đổi bất cứ điều gì:/ –

+0

Ohh crap! Tôi không biết tại sao, xin lỗi! –

-1

này nên làm việc:

.actions tr td:nth-child(3) { 
     white-space: normal; 
     word-break: break-all; 
     max-width:200px; 
    } 
+0

Tôi không muốn chỉ định chiều rộng tối đa cho cột thứ ba, vì trang web có thể được xem trên một loạt màn hình ... –

-1

CSS sau đây dường như để làm cho nó làm việc cho tôi. Lưu ý việc bổ sung bố cục bảng: cố định và sử dụng từ bọc: từ ngắt.

.actions { 
    width:100%; 
    table-layout:fixed; 
} 

.actions tr td { 
    white-space: nowrap; 
} 

.actions tr td:nth-child(3) { 
    white-space:normal; 
    word-wrap: break-word; 
} 
+0

Điều này không tối ưu: tất cả các colums đều dùng cùng một không gian, trong khi hai những người có thể bị thu hẹp mà không vi phạm nội dung của họ, tạo thêm không gian cho người cuối cùng. –

9

Điều này có hiệu quả không? Điều này dường như làm việc với jsfiddle. Phần trăm dựa trên hai cols đầu tiên, sau đó chiều rộng tự động thứ ba, với bảng bố trí: cố định trên bảng.

http://jsfiddle.net/keithwyland/uuF9k/1/

.actions { 
    width:100%; 
    table-layout: fixed; 
} 

.actions tr td { 
    white-space: nowrap; 
    width: 15%; 
} 

.actions tr td:nth-child(3) { 
    white-space: normal; 
    word-break: break-all; 
    word-wrap: break-word; 
    width: auto; 
} 
+2

Phải, nhưng tôi không muốn đặt chiều rộng của các cột ... Và tỷ lệ phần trăm không hoạt động tốt với tỷ lệ cửa sổ (15% của nửa màn hình 800px thực sự không nhiều). Những gì tôi cần là một kích thước tính toán dựa trên các nội dung ... –

+4

Cách duy nhất tôi đã tìm thấy để tránh bảng quá lớn là với 'bảng {bảng bố trí: cố định;}' hoặc với giới hạn td ví dụ: 'td {chiều rộng tối đa: 100px; tràn văn bản: dấu chấm lửng; overflow: hidden;} ' – ubershmekel

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