tràn văn bản: dấu chấm lửng không hoạt động


264

Đây là những gì tôi đã thử (xem ở đây ):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

Về cơ bản, tôi muốn nhịp co lại bằng dấu chấm lửng khi cửa sổ được làm nhỏ. Tôi đã làm gì sai?


6
các yêu cầu để dấu chấm lửng hoạt động: stackoverflow.com/a/33061059/3597276
Michael Benjamin

Vấn đề tôi gặp phải khi tôi nghĩ nó không hoạt động là tôi đã không đặt chiều rộng đủ dài (10px). Vì vậy, tôi đã cắt bỏ dấu chấm lửng, doh!
Rod

Câu trả lời:


459

Bạn cần phải có CSS overflow, width(hoặc max-width) display, và white-space.

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

Phụ lục Nếu bạn muốn có một cái nhìn tổng quan về các kỹ thuật để thực hiện kẹp dòng (Elliles Overflow Ellipses), hãy xem trang CSS-Tricks này: https://css-tricks.com/line-clampin/

Addendum2 (Tháng 5 năm 2019)
Khi liên kết này tuyên bố, Firefox 68 sẽ hỗ trợ -webkit-line-clamp(!)


12
Các tài sản không gian trắng là những gì tôi đã thiếu. Cảm ơn.
nebiousGirl

65
Nó hút rằng bạn cần white-space: nowrap;tài sản. Bây giờ bạn chỉ có thể tạo một dòng văn bản kết thúc bằng ... thay vì văn bản khối.
Sven van Zoelen

3
Hôm nay, tất cả các trình duyệt chính đều hỗ trợ dấu chấm lửng: caniuse.com/#feat=text-overflow
kazy

1
@basZero Multiline Ellipsis không được hỗ trợ với CSS. Bạn phải thực hiện các biện pháp khác
yunzen

1
Bạn cần chỉ định chiều rộng để vùng chứa bị ràng buộc, bạn cần đặt tràn: ẩn để trình duyệt sẽ ẩn văn bản chạy qua, sau đó đặt tràn văn bản: dấu chấm lửng để hướng dẫn trình duyệt cách đặc biệt xử lý ẩn văn bản.
Michael Angstadt

46

Hãy chắc chắn rằng bạn có một phần tử khối, kích thước tối đa và đặt tràn thành ẩn. (Đã thử nghiệm trong IE9 và FF 7)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
Có vẻ như khoảng trắng đó: thuộc tính nowrap nói chung cũng có thể cần thiết cho mọi thứ có khoảng trắng.
Kzqai

Bản sao chính xác của bình luận ở trên.
nebiousGirl

@nebiousGirl: thực sự bình luận của Kzqai sớm hơn những bình luận được đăng trong bình luận của HerrSerk.
Lepe

Có một điều khó hiểu trong IE - IE không bao gồm một từ thứ hai (được thử nghiệm trong IE 11) ... Hãy tìm hiểu. Hoạt động trong mọi trình duyệt khác như mong đợi (bao gồm cả Opera 12 cũ).
Nux

1
@Nux Điều này cũng không hoạt động như mong đợi trong trình duyệt MS Edge
yunzen

21

Đối với nhiều dòng trong Chrome, hãy sử dụng:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

Lấy cảm hứng từ youtube ;-)


Đây là một giải pháp rất thú vị. Nó sử dụng -webkit-*các thuộc tính, nhưng được hỗ trợ trong tất cả các trình duyệt chính. Thông tin thêm có thể được tìm thấy ở đây: css-tricks.com/almanac/properIES/l/line-clamp
dkniffin

5

Tôi đã có một vấn đề với dấu chấm lửng dưới chrome. Bật khoảng trắng: nowrap dường như sửa nó.

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

cái này và chỉ cái này đã làm việc cho tôi

<pre> </pre> 

nhãn

bất cứ điều gì khác không làm được dấu chấm lửng ....


3

Chỉ là một headup cho bất cứ ai có thể vấp ngã này ... h2 của tôi đã được thừa hưởng

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

mà không cho phép dấu chấm lửng. Rõ ràng đây là finickey nhỉ?


2

Thêm mã dưới đây cho nơi bạn thích

thí dụ

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

Đối với nhiều dòng

Trong chrome, bạn có thể áp dụng css này nếu bạn cần áp dụng dấu chấm lửng trên nhiều dòng.

Bạn cũng có thể thêm chiều rộng trong css của mình để chỉ định phần tử có chiều rộng nhất định:

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

Bạn có thể thử sử dụng dấu chấm lửng bằng cách thêm vào phần sau trong CSS:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Nhưng có vẻ như mã này chỉ áp dụng cho cắt một dòng. Nhiều cách khác để cắt văn bản và hiển thị dấu chấm lửng có thể được tìm thấy trong trang web này: http://blog.sanuker.com/?p=631


0

Thêm các dòng sau trong CSS cho dấu chấm lửng để hoạt động

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

Đối với những người trong chúng ta không muốn sử dụng chiều rộng cố định , nó cũng hoạt động bằng cách sử dụng display: inline-grid. Vì vậy, cùng với các thuộc tính cần thiết bạn chỉ cần thêmdisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
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.