2012-01-18 76 views
7

Tôi có một bảng HTML có các hàng được thêm vào trong vòng lặp PHP. Đây là những gì cơ thể lặp trông giống nhưChiều rộng cột cố định trong bảng HTML

<tr> 
    <td style="width:220px"><?php echo $a; ?></td> 
    <td style="width:150px"><?php echo $b; ?></td> 
    <td style="width:70px"><?php echo $c; ?></td> 
    <td style="width:70px"><?php echo $d; ?></td> 
</tr> 

Vấn đề là, khi các nội dung trong cột thứ hai của bất kỳ hàng hơi lớn, độ rộng của cột thứ hai vượt quá 150px, và để bù lại độ rộng của đầu tiên cột giảm. Làm thế nào tôi có thể ngăn chặn điều đó xảy ra. Tôi muốn chiều rộng không thay đổi và nếu nội dung trong bất kỳ ô cụ thể nào quá lớn để vừa, chiều cao sẽ tăng lên để phù hợp.

+0

Bạn đã thử 'text-wrap' [w3schools] (http://www.w3schools.com/cssref/css3_pr_text-wrap.asp) chưa? –

+0

Và tràn: ẩn – batbaatar

+0

Chỉ định chiều rộng cho chính bảng đó, phải bằng tổng chiều rộng của từng chiều rộng riêng lẻ. Lưu ý rằng ngay cả chiều rộng đường viền (ví dụ: 1px) sẽ cần phải được tính vào tổng chiều rộng. Nhưng nếu ô có chứa một chuỗi dài không có khoảng trắng, nó sẽ làm hỏng bố cục bảng một chút vì không có cơ hội để bọc. 'overflow: hidden' như được đề xuất bởi #batbaatar là một ý tưởng hay. –

Trả lời

15

bạn nên cố gắng hướng dẫn CSS này:

td { word-wrap: break-word; } 

mà làm việc trong nhiều trình duyệt (có, bao gồm cả IE 6, thậm chí IE 5,5 nhưng không phải FX 3.0 Nó chỉ được công nhận bởi Fx3.5 + Cũng tốt cho.. Saf, Chr và Op nhưng tôi không biết phiên bản chính xác của những cái này) và không gây hại gì cho những cái khác.

Nếu chiều rộng của bảng vẫn còn sai lầm, đó cũng là:

table { table-layout: fixed; } 
th, td { width: some_value; } 

mà sẽ buộc các trình duyệt để sử dụng các thuật toán bảng khác, là nơi mà nó không cố gắng để thích nghi với nhiều tình huống bao gồm cả những vụng về nhưng dính vào những gì bảng định kiểu nói.

+0

'word wrap' và' table-layout' đã thực hiện thủ thuật. Cảm ơn! – xbonez

0

thử cách này

<tr> 
    <td style="overflow:hidden;width:200px;"><?php echo $a; ?></td> 
    <td style="overflow:hidden;width:150px;"><?php echo $b; ?></td> 
    <td style="overflow:hidden;width:70px;" ><?php echo $c; ?></td> 
    <td style="overflow:hidden;width:70px;" ><?php echo $d; ?></td> 
</tr> 

hoặc bạn có thể sử dụng style="WORD-BREAK:BREAK-ALL; trong phong cách

1
<tr> 
    <td style="word-wrap:break-word;width:200px;"><?php echo $a; ?></td> 
    <td style="word-wrap:break-word;width:150px"><?php echo $b; ?></td> 
    <td style="word-wrap:break-word;width:70px"><?php echo $c; ?></td> 
    <td style="word-wrap:break-word;width:70px"><?php echo $d; ?></td> 
</tr> 

Bạn có thể thử word-wrap:break-word;

Giới thiệu về tài sản

Thuộc tính này quy định cụ thể wh ête dòng kết xuất hiện tại sẽ phá vỡ nếu nội dung vượt quá ranh giới của hộp hiển thị được chỉ định cho một phần tử (điều này tương tự theo một số cách cho thuộc tính 'clip' và 'overflow' trong ý định.) Thuộc tính này chỉ nên áp dụng nếu phần tử có hiển thị trực quan, là một phần tử nội tuyến có chiều cao/chiều rộng rõ ràng, được định vị hoàn toàn và/hoặc là phần tử khối.

+0

great sameera :-) – salocinx

0

Bạn chỉ cần thêm từ bọc: ngắt từ thuộc tính CSS.

mã của bạn sẽ trông như thế này

<td style="width:150px; word-wrap: break-word"><?php echo $b; ?></td> 
0

Bạn có thể bọc nó mỗi nội dung tds với một div và áp dụng phong cách css tràn trên mỗi div:

Hãy thử mẫu này, bạn có thể thay đổi hoặc bổ sung thêm kiểu hoặc thay đổi tràn:

<style> 
    div.c220{ width:220px; overflow:hidden; } 
    div.c150{ width:150px; overflow:hidden; } 
    div.c70{ width:170px; overflow:hidden; } 
</style> 
<tr> 
    <td><div class="c220"><?php echo $a; ?></div></td> 
    <td><div class="c150"><?php echo $b; ?></div></td> 
    <td><div class="c70"><?php echo $c; ?></div></td> 
    <td><div class="c70"><?php echo $d; ?></div></td> 
</tr> 
Các vấn đề liên quan