Hướng dẫn clamp css-tricks - kẹp css-thủ thuật

DigitalOcean cung cấp các sản phẩm đám mây cho mọi giai đoạn của hành trình của bạn. Bắt đầu với $ 200 trong tín dụng miễn phí!

Thuộc tính line-clamp cắt ngắn văn bản tại một số dòng cụ thể.

Thông số kỹ thuật cho nó hiện là một bản nháp của biên tập viên, vì vậy điều đó có nghĩa là không có gì ở đây được đặt trong đá bởi vì nó là một công việc đang tiến triển. Điều đó nói rằng, nó được định nghĩa là một tốc ký cho max-linesblock-overflow, trước đây được ghi nhận là có nguy cơ bị loại bỏ trong khuyến nghị của ứng cử viên.

Thật dễ dàng để thấy max-lines sẽ được kết hợp như thế nào vì chức năng của nó (đặt số lượng dòng trước khi cắt) đã được nướng thành line-clamp và bất kỳ sự trừu tượng nào khác có thể là không cần thiết. Nhưng điều đó khiến chúng tôi lạc quan, vì vậy hãy để Lừa tiếp tục.

Cú pháp

.module {
  line-clamp: [none | <integer>];
}

line-clamp chấp nhận các giá trị sau trong bản nháp hiện tại của thông số kỹ thuật:

  • .truncate {
      text-overflow: ellipsis;
    
      /* Needed to make it work */
      overflow: hidden;
      white-space: nowrap;
    }
    3: Đặt không tối đa về số lượng dòng và kết quả là không có sự cắt ngắn nào.
  • .truncate {
      text-overflow: ellipsis;
    
      /* Needed to make it work */
      overflow: hidden;
      white-space: nowrap;
    }
    4: Đặt số lượng dòng tối đa trước khi cắt ngắn nội dung và sau đó hiển thị dấu chấm lửng (trên) ở cuối dòng cuối cùng.

Ellipsis đó sẽ hiển thị như một ký tự Unicode (U+2026) nhưng có thể được thay thế bằng một tương đương dựa trên ngôn ngữ nội dung và chế độ viết của tác nhân người dùng đang được sử dụng.

Này, tôi có thể làm điều này với dòng chảy văn bản không?

Câu hỏi công bằng, bạn của tôi, và câu trả lời là,

(Xem những gì tôi đã làm ở đó?)

Sắp xếp.

.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */
  overflow: hidden;
  white-space: nowrap;
}
5 thực sự có giá trị
.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */
  overflow: hidden;
  white-space: nowrap;
}
6 sẽ cắt ngắn văn bản:

.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */
  overflow: hidden;
  white-space: nowrap;
}

Xem Bút văn bản-Overflow của Geoff Graham (@geoffgraham) trên Codepen.

Tốt đẹp, đó là một khởi đầu tốt. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn giới thiệu Ellipsis không phải trên dòng đầu tiên mà ở đâu đó, nói rằng dòng thứ ba của văn bản?

Đó là nơi mà line-clamp đi vào chơi. Chỉ cần lưu ý rằng sự kết hợp của ba thuộc tính được sử dụng để thực hiện nó:

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}

Xem kẹp dòng bút (-webkit) của Geoff Graham (@geoffgraham) trên Codepen.

Firefox hỗ trợ điều này ngay bây giờ, chính xác theo cách này (với tiền tố

.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */
  overflow: hidden;
  white-space: nowrap;
}
8 và tất cả).

Vì vậy, những gì mà bắt được?

Ngay bây giờ, hỗ trợ trình duyệt của nó. Kẹp line là một phần của mô -đun tràn CSS cấp 3 hiện đang nằm trong bản nháp của biên tập viên và hoàn toàn không được hỗ trợ tại thời điểm này.

Chúng ta có thể nhận được một số hành động kẹp dòng với tiền tố

.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */
  overflow: hidden;
  white-space: nowrap;
}
8 (đủ kỳ lạ, hoạt động trên tất cả các trình duyệt chính). Trên thực tế, đó là cách mà bản demo trên đã được thực hiện.

Chúng tôi có thể đi xuống con đường JavaScript nếu chúng tôi thích. Kẹp.js sẽ thực hiện thủ thuật:

Xem kẹp dòng bút (kẹp.js) của Geoff Graham (@geoffgraham) trên Codepen.

Hỗ trợ trình duyệt

Đây là sự hỗ trợ cho sự sở hữu của Webkit và việc thực hiện kẹp dòng.

Máy tính để bàn

Trình duyệt ChromeFirefoxI EBờ rìaCuộc đi săn
14* 68* Không 17 5*

Di động / máy tính bảng

Android chromeAndroid FirefoxAndroidiOS safari
107* 106* 2.3* 5.0-5.1*

Tài nguyên bổ sung

  • Mô -đun tràn CSS Cấp 3 - Bản nháp của biên tập viên trong đó kẹp dòng được giới thiệu
  • Tham khảo Safari CSS - Tài liệu cho việc triển khai WebKit không được hỗ trợ
  • Kẹp dòng (Cắt ngắn văn bản nhiều dòng) - của Chris Coyier
  • Kẹp.js-Phương pháp JavaScript để hỗ trợ trình duyệt chéo
  • Cạm bẫy của thẻ uis - Dave Rupert xem xét những nguy hiểm của việc cắt ngắn văn bản

DigitalOcean cung cấp các sản phẩm đám mây cho mọi giai đoạn của hành trình của bạn. Bắt đầu với $ 200 trong tín dụng miễn phí!

Video hay từ Kevin Powell. Dưới đây là một số ghi chú, suy nghĩ và những thứ tôi đã học được khi xem nó. Ngay khi chúng xuất hiện, tôi chủ yếu bị ám ảnh bởi việc sử dụng

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
0, nhưng chúng chỉ là các chức năng, vì vậy chúng có thể được sử dụng ở bất cứ nơi nào bạn sử dụng một số, giống như một chiều dài.

Đôi khi việc sử dụng khá cơ bản cho phép mã chặt chẽ hơn, nhưng sự thay đổi để có được đó cảm thấy hơi khó chịu. Giống như cách thiết lập một mức tối đa ở đây, bạn thực sự sử dụng

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
1.

.el {
  width: 75%;
  max-width: 600px;

  /* tighter, but the change from max to min feels weird */
  width: min(75%, 600px);
}

Các hàm

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
1 và
.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
3 có thể mất nhiều hơn hai giá trị, rất tuyệt, nhưng khó giữ thẳng những gì đang diễn ra! Sẽ thật tuyệt nếu Devtools có thể cho bạn biết nó đã chọn cái nào tại bất kỳ thời điểm nào.

.el {
  width: min(100px, 25%, 50vh, 30ch);
}

Bạn không cần một

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
4 để làm toán bên trong!

.el {
  width: min(10vw + 10%, 100px);
}

Nó rất hợp lý mà bạn muốn đặt một giá trị tối đa và tối đa. Bạn có thể làm tổ các chức năng để làm điều này, nhưng nó ít bị suy nghĩ hơn để làm với

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}
5.

.el {
  /* Note we're always using a relative unit somewhere
     so that zooming stays effective. */
  font-size: clamp(0.9rem, 1vw + 1rem, 2.2rem);
}

Ở đây, video nhúng video:

Liên kết trực tiếp →