2013-04-29 23 views
5

Tôi đang cố gắng bọc văn bản trong bố cục cố định nhưng nó không hoạt động khi văn bản có dấu gạch chéo.từ-cell từ-wrap không hoạt động với dấu gạch chéo

Điều này có thể được sửa mà không chèn khoảng trắng từ Javascript (CSS thuần túy) không?

jsfiddle:

http://jsfiddle.net/HgBhk/1/

Not working: 
<div style="display:table; width:170px; background-color:cyan;"> 
    <div style="display:table-row"> 
     <div style="display:table-cell;word-wrap: break-word;">abfdbfdbfdb/dfbfdbdfbfbf/bdffbdbfdfbddfbdfbdfb</div> 
     <div style="display:table-cell; width:34px; background-color:red;">xxxxx</div>   
    </div> 
</div> 

</br> 
Working: 
<div style="display:table; width:170px; background-color:cyan;"> 
    <div style="display:table-row"> 
     <div style="display:table-cell;word-wrap: break-word;">abfdbfdbfdb dfbfdbdfbfbf bdffbdbfdfbddfbdfbdfb</div> 
     <div style="display:table-cell; width:34px; background-color:red;">xxxxx</div>   
    </div> 
</div> 
+1

Tại sao bạn sử dụng div cho dữ liệu dạng bảng? Sử dụng TABLES..Funny world eh ~ mọi người sử dụng div cho dữ liệu dạng bảng và bảng cho bố cục –

+0

lý do trường hợp thứ hai hoạt động là khoảng trắng, không phải là sự vắng mặt của dấu gạch chéo. Nếu bạn loại bỏ các không gian và có một chuỗi dài (như trường hợp đầu tiên) nó sẽ không hoạt động. – hexblot

+0

Tôi không sử dụng bảng vì hiệu suất. Tôi biết có một cuộc thảo luận dài về điều này, ưu và nhược điểm .. –

Trả lời

0

Thêm table-layout:fixed; đến phần tử div "bảng" và chỉ định một chiều rộng để các tế bào để làm cho nó phá vỡ dòng:

JSFiddle

+0

có, nhưng tôi không muốn nó được cố định, tôi muốn lấp đầy khoảng trống còn lại –

+0

Sau đó gán 'width: auto;', ít nhất cung cấp cho nó một số dạng width :) [JSFiddle] (http: // jsfiddle. net/HgBhk/5 /) –

+0

tuyệt vời, cảm ơn, tôi sẽ chấp nhận câu trả lời –

1

Chèn một thẻ <wbr> hoặc không gian có chiều rộng bằng không &#x200b; sau mỗi o ccurrence của dấu gạch chéo hoặc ký tự khác cần được xử lý như cho phép ngắt dòng trực tiếp sau nó. Lựa chọn giữa các lựa chọn thay thế này là một chút complicated, nhưng vì mã của bạn đã không hoạt động trên các phiên bản cũ của IE, bạn cũng có thể bỏ qua chúng ở đây, và điều này sẽ làm cho sự lựa chọn đúng là &#x200b;. Tức là, bạn sẽ viết ví dụ

abfdbfdbfdb/&#x200b;dfbfdbdfbfbf/&#x200b;bdffbdbfdfbddfbdfbdfb 

Vấn đề ở cấp độ ký tự, không phải là vấn đề tạo kiểu.

Một chuỗi không chứa ký tự khoảng trắng thường không thể phân tách trong gói và phải như vậy, trừ khi bạn có thể làm cho trình duyệt có thể phá vỡ các điểm phá vỡ được chấp nhận hoặc gạch nối đúng cách và sử dụng phân chia từ. Một thiết lập như word-wrap: break-word có nghĩa là đối với trường hợp ngoại lệ, trường hợp khẩn cấp bị hỏng khi không có cách nào tốt để kiểm soát gói và có nhu cầu tránh tràn.

+0

điều này có nghĩa là tôi phải thay đổi văn bản..với javscript, phải không? câu hỏi ban đầu là làm thế nào để thực hiện, không có JS, cộng với tôi không cần gạch nối trên đường dẫn. tôi nghĩ câu trả lời là một chủ đề nhỏ lẻ –

+0

Nó phụ thuộc vào ngữ cảnh làm thế nào bạn có thể sửa đổi tài liệu HTML. Sửa đổi nó * là * đúng cách để xử lý gói đúng cách (nếu gói là cần thiết, trong hầu hết trường hợp khi mọi người đặt tên đường dẫn hoặc URL dài vào nội dung hiển thị, họ nên sử dụng cái gì đó bình thường hơn, như tên ngắn). Đường dẫn không nên gạch nối tất nhiên; ngược lại, bạn nên chắc chắn rằng chúng không bị chia nhỏ sau "-" nếu một nhân vật như vậy xuất hiện ở đó. CSS * không thể * xử lý những thứ như thế này (hiện tại hoặc trong tương lai gần). –

+0

Bạn đã lưu ngày của tôi! Cảm ơn bạn! – shaosh