cắt văn bản quá dài bên trong div


85
<div style="display:inline-block;width:100px;">

very long text
</div>

bất kỳ cách nào để sử dụng css thuần túy để cắt văn bản quá dài thay vì hiển thị trên dòng mới tiếp theo và chỉ hiển thị tối đa 100px

Câu trả lời:


56
<div class="crop">longlong longlong longlong longlong longlong longlong </div>​

Đây là một cách tiếp cận khả thi mà tôi có thể nghĩ ra

.crop {width:100px;overflow:hidden;height:50px;line-height:50px;}​

Bằng cách này, văn bản dài sẽ vẫn bao bọc nhưng sẽ không hiển thị do overflowđã đặt và bằng cách đặt line-heightgiống như heightchúng tôi đảm bảo rằng chỉ một dòng sẽ được hiển thị.

Xem demo ở đây và mô tả thuộc tính tràn tuyệt đẹp với các ví dụ tương tác.


1
Tôi sẽ không tính đến "line-height" để ngăn dòng chữ bị ngắt vì có thể người dùng đã thay đổi cài đặt phông chữ của mình (đối với văn bản nhỏ hơn) trong trình duyệt. Tương tự như vậy đối với các phông chữ lớn, nếu bạn đã cố định chiều cao của div thành số pixel, điều đó có thể trông rất khủng khiếp. Đặc biệt với các trình duyệt di động và màn hình "võng mạc", tôi sẽ cố gắng để chiều cao của div linh hoạt nếu bố cục thiết kế cho phép - điều đó nên làm!
PJ Brunet

154

Bạn có thể dùng:

overflow:hidden;

để ẩn văn bản bên ngoài vùng.

Lưu ý rằng nó có thể cắt chữ cái cuối cùng (vì vậy một phần của chữ cái cuối cùng vẫn sẽ được hiển thị). Một cách đẹp hơn là hiển thị dấu chấm lửng ở cuối. Bạn có thể làm điều đó bằng cách sử dụng text-overflow:

overflow: hidden;
white-space: nowrap; /* Don't forget this one */
text-overflow: ellipsis;

white-space: nowrap không thực sự cần thiết vì tôi có nhiều dòng hiển thị đường dẫn tệp dài. Nếu không có khoảng trắng, đường dẫn dài không thể phá vỡ sẽ có dấu ba chấm, sau đó dòng tiếp theo sẽ hiển thị phần còn lại của đường dẫn. Điều đáng chú ý là tôi có thể sao chép văn bản (bao gồm cả dấu chấm lửng), và sau đó nó sẽ dán toàn bộ đường dẫn. Đẹp!
Robert Koch

Trong trường hợp bạn thắc mắc (giống như tôi), dấu chấm lửng sẽ không hoạt động trong các phiên bản Firefox cũ hơn. "Vì Firefox phiên bản 7 text-tràn: dấu chấm lửng được hỗ trợ." stackoverflow.com/questions/5990414/...
PJ Brunet

Điều gì sẽ xảy ra nếu bạn muốn có một chú giải công cụ khi di chuột để hiển thị toàn bộ văn bản hoặc một cái gì đó giống nhau?
pedrorijo91

2
@ pedrorijo91 Bạn chỉ có thể sử dụng title="full text goes here"trong html.
Jerry


9

Tại sao không sử dụng đơn vị tương đối?

.cropText {
    max-width: 20em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

4

Mã bên dưới sẽ ẩn văn bản của bạn với chiều rộng cố định do bạn quyết định. nhưng không hoàn toàn phù hợp với các thiết kế đáp ứng.

.CropLongTexts {
  width: 170px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Cập nhật

Tôi đã nhận thấy trong (các) thiết bị di động rằng văn bản (trộn lẫn) với nhau do (chiều rộng cố định) ... vì vậy tôi đã chỉnh sửa mã ở trên để trở thành ẩn một cách phản hồi như sau:

.CropLongTexts {
  max-width: 170px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

(Chiều rộng tối đa) đảm bảo văn bản sẽ được ẩn một cách thích ứng bất kể (kích thước màn hình) và sẽ không bị trộn lẫn với nhau.


3
Mặc dù mã này có thể trả lời câu hỏi, nhưng việc cung cấp thêm ngữ cảnh liên quan đến lý do và / hoặc cách mã này trả lời câu hỏi sẽ cải thiện giá trị lâu dài của nó.
Donald Duck

0

   .cut_text {
      white-space: nowrap; 
      width: 200px; 
      border: 1px solid #000000;
      overflow: hidden;
      text-overflow: ellipsis;
    }
<div class="cut_text">

very long text
</div>

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.