Làm thế nào để từ văn bản bọc trong HTML?


184

Làm thế nào có thể văn bản như thế aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavượt quá chiều rộng của một div(nói 200px) được bọc?

Tôi mở cho bất kỳ loại giải pháp nào như CSS, jQuery, v.v.

Câu trả lời:


239

Thử cái này:

div {
    width: 200px;
    word-wrap: break-word;
}

1
Tôi có nhầm lẫn hay gói từ là quyền sở hữu CSS3 không?
Gab Royer

13
Đó là CSS3, nhưng nó hoạt động trong hầu hết các trình duyệt chính, bao gồm IE5.5 -> 9 - caniuse.com/#search=word-wrap
Jon Hadley

32
Khi word-quấn: break-word; không làm việc thử word-break: break-all; / * đây là một kẻ giết người * /
redochka

@redochka Nhưng khi sử dụng word-break: break-all;sau đó trong văn bản bình thường, nó phá vỡ các từ ở giữa, điều này thật xấu xí ... Chúng ta không thể có sự kết hợp của cả hai hành vi?
pawamoy

5
Quan trọng: Nó là word-break: break-allvà không word-wrap: break-all. Dễ mắc lỗi
Simon_Weaver

58

Trên bootstrap 3, đảm bảo khoảng trắng không được đặt là 'nowrap'.

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}

Tuyệt quá. Tôi đã thử sử dụng word-break: break-all trên thân bảng điều khiển Twitter Bootstrap 3 nhưng nó không bao giờ hoạt động. Thêm khoảng trắng: bình thường là sửa chữa.
coolboyjules

5
Đẹp, tôi cũng cần white-space: normal;trước khi nó hoạt động.
radbyx

56

Bạn có thể sử dụng dấu gạch nối mềm như vậy:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

Điều này sẽ xuất hiện dưới dạng

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

nếu hộp chứa không đủ lớn, hoặc như

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

nếu nó là.


18
Nhưng làm thế nào bạn sẽ biết nơi để đặt ­?
Kostas

Bạn đặt nó thành những từ dài, nơi chúng có thể được chia. Bạn thậm chí có thể lấy thông tin đó tự động từ một từ điển phù hợp.
Kim Stebel

4
Nhưng làm thế nào về tiếng vô nghĩa như trong ví dụ? Có thể biến aaaaaa...aaaaathành a­a­a­a­a­a­a...a­a­a­a?
Kostas

19
Chính xác những gì tôi đang tìm kiếm. Tôi thích điều đó quá ngại để làm bất cứ điều gì cho đến khi nó phải ;-)
w00t

3
điều này hoạt động tốt nếu từ được gói là một overly.long.java.package.name hoặc một số chuỗi tương tự có nhiều dấu chấm. sau đó bạn có thể thêm & shy; sau mỗi dấu chấm.
dokaspar

28
   div {
    // set a width
    word-wrap: break-word
}

Các ' word-wrap' giải pháp duy nhất làm việc trong IE và các trình duyệt hỗ trợ CSS3.

Giải pháp trình duyệt chéo tốt nhất là sử dụng ngôn ngữ phía máy chủ của bạn (php hoặc bất cứ thứ gì) để định vị các chuỗi dài và đặt bên trong chúng theo các khoảng thời gian đều đặn thực thể html ​ này phá vỡ các từ dài độc đáo và hoạt động trên tất cả các trình duyệt.

ví dụ

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

8
"Đặt bên trong chúng theo định kỳ các thực thể html # 8203" nhưng sau đó khi bạn cố gắng sao chép văn bản và dán nó vào một nơi nào đó, bạn sẽ có một ký tự Unicode ngẫu nhiên ở giữa
user102008

9

Công cụ duy nhất hoạt động trên IE, Firefox, chrome, safari và opera nếu không có khoảng trắng trong từ (chẳng hạn như một URL dài) là:

div{
    width: 200px;  
    word-break: break-all;
}

Tôi thấy điều này là chống đạn.


9

Điều này làm việc cho tôi

word-wrap: normal;
word-break: break-all;
white-space: normal;
display: block;
height: auto;
margin: 3px auto;
line-height: 1.4;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;

6

Một tùy chọn khác cũng đang sử dụng:

div
{
   white-space: pre-line;
}

Điều này sẽ đặt tất cả các thành phần div của bạn trong tất cả các trình duyệt hỗ trợ CSS1 (gần như tất cả các trình duyệt phổ biến từ thời IE 8)


Nếu bạn có một <pre>yếu tố bạn muốn có gói văn bản, tác phẩm này và word-breakhay word-wrapkhông.
Sao Diêm Vương

4

Qua trình duyệt

.wrap
{
    white-space: pre-wrap; /* css-3 */    
    white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    white-space: -pre-wrap; /* Opera 4-6 */    
    white-space: -o-pre-wrap; /* Opera 7 */    
    word-wrap: break-word; /* Internet Explorer 5.5+ */
}

2

Thêm CSS này vào đoạn văn.

style="width:420px; 
min-height:15px; 
height:auto!important; 
color:#666; padding: 1%; 
font-size: 14px; 
font-weight: normal;
word-wrap: break-word; 
text-align: left" 

2
Tôi thích text-overflow:ellipsisnhiều như anh chàng tiếp theo, nhưng nó không phải là một câu trả lời chính xác cho câu hỏi này. Anh ấy đang tìm cách gói từ, không cắt bớt tràn.
Spudley

1

Ví dụ từ Thủ thuật CSS :

div {
    -ms-word-break: break-all;

    /* Be VERY careful with this, breaks normal words wh_erever */
    word-break: break-all;

    /* Non standard for webkit */
    word-break: break-word;

    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

Thêm ví dụ ở đây .


0

Một giải pháp phía máy chủ phù hợp với tôi là: $message = wordwrap($message, 50, "<br>", true);trong đó $messagemột biến chuỗi chứa từ / ký tự được chia nhỏ. 50 là độ dài tối đa của bất kỳ phân đoạn cụ thể nào và "<br>"là văn bản bạn muốn chèn vào mỗi (50) ký tự.


4
Giải pháp này sẽ không hoạt động nếu 50 lần chiều rộng ký tự lớn hơn mức tối đa 200px yêu cầu. Chỉ cần sử dụng chức năng phóng to của trình duyệt và cuối cùng bạn sẽ thấy nó bị
hỏng

0

Thử cái này

div{
  display: block;
  display: -webkit-box;
  height: 20px;
  margin: 3px auto;
  font-size: 14px;
  line-height: 1.4;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

tràn văn bản thuộc tính: dấu chấm lửng thêm ... và kẹp dòng hiển thị số lượng dòng.


0

Trong phần thân HTML, hãy thử:

<table>
    <tr>
        <td>
            <div style="word-wrap: break-word; width: 800px">
                Hello world, how are you? More text here to see if it wraps after a long while of writing and it does on Firefox but I have not tested it on Chrome yet. It also works wonders if you have a medium to long paragraph. Just avoid writing in the CSS file that the words have to break-all, that's a small tip.
            </div>
        </td>
    </tr>
</table>

Trong phần thân CSS hãy thử:

background-size: auto;

table-layout: fixed;


0

Tôi đã sử dụng bootstrap. Mã html của tôi trông giống như ..

<div class="container mt-3" style="width: 100%;">
  <div class="row">
    <div class="col-sm-12 wrap-text">
      <h6>
        text content
      </h6>
    </div>
  </div>
</div>

CSS

.wrap-text {
     text-align:justify;
}

Bootstrap có text-justifylớp, vì vậy bạn có thể sử dụng nó thay vì.wrap-text
barbsan

0

bạn có thể sử dụng CSS này

p {
  width: min-content;
  min-width: 100%;
}


-2

Sử dụng word-wrap:break-wordthuộc tính cùng với chiều rộng yêu cầu. Chủ yếu, đặt chiều rộng tính bằng pixel, không tính theo tỷ lệ phần trăm.

width: 200px;
word-wrap: break-word;

14
Điều này giống hệt với câu trả lời ở trên. Quan tâm làm gì?
trgraglia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.