Tôi đang tìm cách trình duyệt chéo bao gồm các phần văn bản dài không có dấu cách (ví dụ: URL dài) bên trong các div có độ rộng được xác định trước.từ bọc trong css/js
Dưới đây là một số giải pháp tôi đã tìm thấy khắp nơi trên web và tại sao họ không làm việc cho tôi:
- overflow: hidden/tự động/di chuyển - Tôi cần toàn bộ văn bản được hiển thị mà không cần cuộn. Các div có thể phát triển theo chiều dọc, nhưng không theo chiều ngang.
- Tiêm & nhút nhát; vào chuỗi qua js/server-side - & nhút nhát; được hỗ trợ bởi FF3 ngay bây giờ, nhưng sao chép và dán URL bằng một nhòe &; ở giữa sẽ không hoạt động trong Safari. Ngoài ra, theo hiểu biết của tôi, không có phương pháp đo chiều rộng văn bản rõ ràng nào để tìm ra khoảng bù chuỗi tốt nhất để thêm các ký tự này vào (có một cách hacky, xem mục tiếp theo). Một vấn đề khác là việc phóng to trong Firefox và Opera có thể dễ dàng phá vỡ điều này.
- bán phá giá văn bản thành phần tử ẩn và đo offsetWidth - liên quan đến mục ở trên, yêu cầu thêm ký tự thừa vào chuỗi. Ngoài ra, việc đo lường số lần ngắt được yêu cầu trong một đoạn văn bản dài có thể dễ dàng yêu cầu hàng ngàn lần chèn DOM đắt tiền (một cho mỗi chiều dài chuỗi con), có thể đóng băng hiệu quả trang web.
- sử dụng phông chữ đơn cách - một lần nữa, việc thu phóng có thể làm hỏng các tính toán chiều rộng và văn bản không thể được tạo kiểu tự do.
Những điều trông đầy hứa hẹn nhưng không khá có:
- word-wrap: word break- - nó bây giờ part of CSS3 working draft, nhưng nó không được hỗ trợ bởi một trong hai trình duyệt Firefox, Opera hoặc Safari được nêu ra. Đây sẽ là giải pháp lý tưởng nếu nó làm việc trên tất cả các trình duyệt hiện nay :(
- tiêm <WBR> thẻ vào chuỗi qua js/server-side - sao chép và dán URL tác phẩm trong tất cả các trình duyệt, nhưng tôi vẫn không Ngoài ra, thẻ này sẽ vô hiệu hóa HTML. Ngoài ra, thẻ này sẽ làm mất hiệu lực HTML. bộ nhớ và làm chậm truy vấn bộ chọn, trong số những thứ khác)
Có ai có thêm ý tưởng về cách giải quyết vấn đề này không?
'word-wrap: break-word; ' hoạt động cho Firefox 3.5+ - nhưng không dành cho các yếu tố nội tuyến như span. (thậm chí không có trong Firefox 5.0) Bạn phải áp dụng 'display: inline-block;' để span các phần tử với 'word-wrap: break-word;' – crispy