2013-01-23 25 views
22

Tôi có hai div được thả nổi, cạnh nhau, với các thẻ p bên trong. Các văn bản trong các thẻ p không quấn và chỉ tràn container, như bạn có thể thấy trong các văn bản dưới hình ảnh:Văn bản không được gói trong thẻ p

Example:

HTML của tôi trông giống như vậy:

 <div class="submenu"> 
      <h3>Destinations in Europe</h3> 
      <ul> 
       <li><a href="#">dfgdgdgfgdg</a></li> 
       <li><a href="#">dfgdgdgfgdg</a></li> 
       <li><a href="#">dfgdgdgfgdg</a></li> 
       <li><a href="#">dfgdgdgfgdg</a></li> 
      </ul> 
      <h3>Features</h3> 
      <div> 
       <img src="/assets/images/o/menu/city-feat-one.jpg" /> 
       <h4>blahblah</h4> 
       <p> 
        khkhjhjkhkyhkighkjfkhkiyhohhjkhjlhkluoiulohlhjhiououhljhiououhljhiououhljhiououhljhiououhljhiououhl 
       </p> 
      </div> 
      <div> 
       <img src="/assets/images/o/menu/city-feat-two.jpg" /> 
       <h4>blahblah</h4> 
       <p> 
        khkhjhjkhkyhkighkjfkhkiyhohhjkhjlhkluoiulohlhjhiououhl 
       </p> 
      </div>   
     </div> 

CSS của tôi :

#rb-menu-com li .submenu > div { 
    width:48%; 
    float:left; 
    position: relative; 
} 

#rb-menu-com li .submenu div p { 
    color:#fff; 
    margin: 0; 
    padding:0; 
    width:100%; 
    position: relative; 
} 

#rb-menu-com li .submenu div img { 
    border:1px solid #fff; 
} 

Có ai đã từng trải nghiệm điều này trước đây không? Tôi chưa từng !! Làm tôi phát điên!

Trả lời

38

Lời gói chỉ xảy ra khi có một break từ.

Nếu bạn có "từ", miễn là đó, thì không có chỗ nào để vỡ.

Giải pháp thích hợp là viết nội dung thực và không phải là chuỗi ký tự vô nghĩa. Nếu bạn đang sử dụng nội dung do người dùng tạo, hãy thêm dấu kiểm cho các từ dài đặc biệt và không cho phép chúng (hoặc cắt một phần của chúng cho URL trong khi vẫn giữ toàn bộ nội dung trong liên kết).

Hoặc, bạn có thể sử dụng word-break CSS property để yêu cầu trình duyệt ngắt dòng ở giữa các từ.

p { word-break: break-all } 

(Lưu ý browser support).

Hoặc, bạn có thể sử dụng overflow để cắt bớt văn bản nếu văn bản không vừa trong vùng chứa.

+0

Không chính xác. Tôi đã có một kịch bản mà tôi cần hiển thị mã khung nội tuyến có URL dài. Đã phải sử dụng 'word-break: break-all' –

+0

@ShahAbazKhan - Điều gì không đúng? Đó là giải pháp cho trường hợp cụ thể này, nơi mà vấn đề được gây ra bằng cách sử dụng nội dung giữ chỗ vô nghĩa, là không sử dụng nội dung giữ chỗ vô nghĩa? – Quentin

-2

thêm dấu phẩy: thuộc tính bên trái vào hình ảnh.

#rb-menu-com li .submenu div img { 
    border:1px solid #fff; 
    float:left; 
} 
50

Cung cấp kiểu này cho thẻ <p>.

p { 
    word-break: break-all; 
    white-space: normal; 
} 
+4

này sẽ phá vỡ các từ riêng lẻ trên các nhân vật của họ. Bạn có thể muốn sử dụng 'word-break: normal;' và cung cấp cho parent một 'width'. –

+0

@MaraisRossouw Đây là cùng một, đã được chấp nhận ở trên. –

+2

không gian trắng là những gì tạo nên sự khác biệt ở đây. –

5

Đó là vì bạn có văn bản liên tục, có nghĩa là một từ dài không có khoảng trống. Để phá vỡ nó thêm word-break: break-all;

.submenu div p { 
    color:#fff; 
    margin: 0; 
    padding:0; 
    width:100%; 
    position: relative; word-break: break-all; background:red 
} 

DEMO

3

Đây không phải là câu trả lời cho câu hỏi nhưng khi tôi tìm thấy trang này trong khi tìm kiếm câu trả lời cho một vấn đề mà tôi có, tôi muốn đề cập đến giải pháp mà tôi tìm thấy vì tôi mất nhiều thời gian. Với hy vọng điều này sẽ hữu ích cho những người khác:

Vấn đề là văn bản đó trong một thẻ <p> sẽ không gấp trong div. Cuối cùng, tôi mở thanh tra và nhận thấy một 'thực thể không phá vỡ' giữa tất cả các từ. Trình soạn thảo của tôi, vi, chỉ hiển thị các khoảng trống bình thường (một số không rõ ràng, tôi không biết điều gì) nhưng tôi đã sao chép đã dán văn bản từ một tài liệu PDF. Giải pháp là sao chép một khoảng trống từ bên trong vi và thay thế nó bằng một khoảng trống. I E. :% s///g nơi trống được thay thế được sao chép từ văn bản vi phạm. Đã giải quyết được sự cố.

1

Bạn có thể sử dụng từ bọc để ngắt các từ hoặc chuỗi ký tự liên tục nếu nó không vừa với một dòng trong vùng chứa.

word-wrap: break-word; 

điều này sẽ tiếp tục ngắt dòng tại các điểm ngắt thích hợp trừ khi một chuỗi ký tự không khớp trên một dòng, trong trường hợp đó nó sẽ bị hỏng.

JSFiddle

9

Để ai vẫn còn đang gặp khó khăn, hãy chắc chắn để kiểm tra và xem nếu bạn đã thiết lập một giá trị line-height trên phông chữ trong câu hỏi: nó có thể được trọng các quấn từ.

+0

Cảm ơn bạn đã giúp tôi thu hẹp vấn đề này! Tôi không thể nhận được một đoạn hoàn toàn vị trí để bọc ở tất cả cho đến khi tôi nhìn thấy câu trả lời của bạn. Chắc chắn đủ chiều cao dòng phông chữ đã được đặt trên một phần tử cha và đang cản trở bất kỳ nỗ lực nào khác ảnh hưởng đến từ bọc. –

1

EASY

p{ 
    word-wrap: break-word; 
} 
+2

Chào mừng bạn đến với Stack Overflow. @Kevin Oonk [answer] (http://stackoverflow.com/a/22047878/51242) từ năm 2014 đã gợi ý 'word-wrap: break-word;'. Vui lòng đảm bảo câu trả lời của bạn cung cấp nội dung nào đó mới mẻ và mới và không chỉ bao gồm thông tin lặp lại từ các câu trả lời hiện có. – Bryan

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