text-box-trim CSS

Ngày xuất bản: 14 tháng 1 năm 2025

Từ Chrome 133, text-box cho phép nhà phát triển và nhà thiết kế điều chỉnh khoảng cách phía trên và bên dưới văn bản.

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: behind a flag.
  • Safari: 18.2.

Source

Longhand:

text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading + alphabetic | text;

Shorthand:

text-box: trim-both cap alphabetic;

Thuộc tính này cho phép bạn kiểm soát khoảng cách phía trên và bên dưới văn bản, ví dụ: <h1>, <button><p>. Mỗi phông chữ tạo ra một lượng khác nhau của khoảng cách theo hướng khối này, góp phần vào kích thước của phần tử. Đóng góp khoảng cách hỗn loạn này không dễ đo lường và cho đến nay, không thể kiểm soát được.

Phông chữ biết, CSS cũng biết.

Thử trên CodePen

Khoảng cách phía trên và bên dưới phông chữ tồn tại do cách web bố trí văn bản, được gọi là "nửa khoảng cách dòng". Điều này được đề cập một cách chuyên nghiệp trong bài đăng của Matthias Ott có tên là The Thing With Leading In CSS. Về cơ bản, khi việc sắp chữ được thực hiện bằng tay, các mảnh chì kim loại được dùng để phân tách các dòng văn bản. Web, lấy cảm hứng từ khoảng cách dòng, chia khoảng cách dòng thành hai phần và phân phối một phần phía trên và một phần phía dưới nội dung.

Tiêu đề được hiển thị với một thanh màu hồng đậm phía trên và bên dưới văn bản để minh hoạ nửa khoảng cách dòng. Nguồn

Lịch sử này có ý nghĩa vì text-box cung cấp cho chúng ta tên cho mỗi nửa: trên và dưới. Ngoài ra, bạn có thể cắt bỏ nó.

Ngoài ra còn có thông tin trước đây cho text-box. Bạn có thể nhớ lại bài đăng thú vị của Ethan Wang có tên là Leading-Trim: The Future Of Digital Typesetting, trong đó leading-trim (tên mà text-box từng có) lần đầu tiên được giới thiệu.

Một tiêu đề có quá nhiều khoảng trống ở trên và bên dưới sẽ bị cắt bằng kéo và bị xoá.

Điểm bắt đầu của bạn để cắt văn bản có thể là từ Figma và các chế độ điều khiển "cắt dọc" cho nhà thiết kế. Bài đăng này trên X minh hoạ vị trí của tuỳ chọn cắt dọc này và cách tuỳ chọn này hữu ích cho các nút.

Nguồn

Bất kể bạn đến đây bằng cách nào, chế độ điều khiển kiểu chữ nhỏ này có thể tạo ra sự khác biệt lớn.

Tính năng và cú pháp

Theo tôi, đây là 2 dòng mã phổ biến nhất mà bạn sẽ cần khi làm việc với text-box:

h1 {
  /* trim both sides to the capital letters */
  text-box: trim-both cap alphabetic;

  /* trim both sides to the lowercase letter x */
  text-box: trim-both ex alphabetic;
}

Việc cắt cả hai thành cap alphabetic sẽ là cách sử dụng phổ biến nhất của tính năng này. Các bản minh hoạ sau đây sử dụng tính năng này nhiều lần. Tuy nhiên, ví dụ trước cũng cho thấy ex alphabetic vì nó hữu ích cho sự cân bằng quang học theo những cách riêng biệt.

Sân chơi khám phá

Khám phá cú pháp trong sân chơi của chúng tôi, và xem kết quả bằng cách sử dụng trình đơn thả xuống. Bạn có thể thay đổi phông chữ, thay đổi giá trị cắt trên và dưới, đồng thời theo dõi hình ảnh và nhãn được mã hoá bằng màu.

Bản xem trước cú pháp với hộp văn bản: cú pháp cắt cả hai chữ cái viết hoa được làm nổi bật và hiển thị. Có thêm 3 trình đơn thả xuống để chọn giá trị cắt.

Những điều cần thử:

  1. Kiểm tra trực quan cách text-box-trim hoạt động trên các biến thể văn bản một dòng và nhiều dòng.
  2. Di chuột qua một biến thể, xem các giá trị cắt được dùng để đạt được hiệu ứng đó.
  3. Thay đổi phông chữ.
  4. Chỉ cắt một bên của hộp văn bản.
  5. Xem lại cú pháp khi bạn chơi.
Thử trên CodePen

Tôi có thể xây dựng những gì và tính năng này giải quyết những vấn đề gì?

Có một số giải pháp căn giữa và căn chỉnh đơn giản hơn nhiều xuất hiện từ khả năng cắt này. Bạn thậm chí có thể tiến gần hơn đến khoảng cách dòng thích hợp, trong đó bạn có thể dùng gap giữa các nội dung.

So sánh giữa 2 nhóm nội dung.
Nhóm đầu tiên có nửa khoảng cách dòng, nhóm thứ hai có khoảng cách dòng đã cắt. Kết quả là nhóm thứ hai chặt chẽ hơn. Thử trên CodePen

Căn giữa dễ dàng hơn

Đối với các thành phần nhỏ hơn, cùng dòng hơn và có nội dung vốn có, padding: 10px là kiểu hợp lý để chỉ định cho một phần tử để có khoảng cách bằng nhau ở tất cả các bên. Tuy nhiên, kết quả có thể khiến mọi người nhầm lẫn vì thường có thêm khoảng trống ở trên cùng và dưới cùng.

Để khắc phục vấn đề này, lập trình viên thường đặt ít khoảng đệm hơn ở trên cùng và dưới cùng (khối) để bù trừ cho các hiệu ứng của nửa khoảng cách dòng.

button {
  padding-block: 5px;
  padding-inline: 10px;
}

Tại thời điểm này, chúng ta phải thử các tổ hợp giá trị cho đến khi các thành phần được căn giữa một cách quang học. Điều này có thể trông đẹp trên một màn hình và hệ điều hành, nhưng không đẹp trên màn hình và hệ điều hành khác.

text-box cho phép chúng ta cắt khoảng cách nửa khoảng cách dòng khỏi văn bản, giúp các giá trị khoảng đệm bằng nhau như 10px trở nên hữu ích:

button {
  text-box: trim-both cap alphabetic;
  padding: 10px;
}
Hai ví dụ được minh hoạ.
Phần đầu tiên cho thấy một phần tử có khoảng đệm: 10px và nửa khoảng cách dòng. Phần thứ hai cho thấy cùng một phần tử có hộp văn bản: cắt cả hai chữ cái viết hoa. Kết quả là nút thứ hai được căn giữa một cách quang học. Thử trên CodePen

Dưới đây là một vài phần tử <button> cho thấy cách cắt khoảng cách bằng text-box giúp padding: 10px trông bằng nhau ở tất cả các bên trong một thành phần tương tác thực tế. Hãy lưu ý cách phông chữ thay thế có thể tạo ra một số khoảng cách nửa khoảng cách dòng khác biệt đáng kể.

Ba nhóm nút. Hình đầu tiên sử dụng phông chữ sans serif thông thường, hình thứ hai sử dụng phông chữ lạ mắt hoặc vui nhộn và hình thứ ba sử dụng cùng một hiệu ứng với phông chữ viết tay.
Mỗi phông chữ có khoảng cách nửa khoảng cách dòng khác nhau, nhưng các giá trị cắt giống nhau và có thể chuẩn hoá khoảng cách. Thử trên CodePen

Dưới đây là các phần tử <span>, thường được dùng để hiển thị danh mục hoặc huy hiệu. Một trường hợp khác mà khoảng đệm bằng nhau ở các bên sẽ là giải pháp tốt nhất, nhưng cho đến khi có text-box, chúng ta phải giải quyết vấn đề này.

Các thẻ được hiển thị song song. Nhóm đầu tiên có khoảng cách dòng là một nửa, nhóm thứ hai có khoảng cách dòng được cắt bớt.
Nhóm thẻ thứ hai chặt chẽ hơn và được căn giữa một cách quang học nhờ khoảng cách dòng đã cắt.

Căn chỉnh dễ dàng hơn

Khoảng cách nửa khoảng cách dòng bổ sung, không thể kiểm soát được ở phía trên (over) và phía dưới (under) hộp văn bản cũng khiến việc căn chỉnh trở nên khó khăn. Các ví dụ sau đây cho thấy khi nửa khoảng cách dòng có thể khiến việc căn chỉnh trở nên khó khăn và cách cắt các bên khối của hộp văn bản có thể tạo ra sự căn chỉnh tốt hơn.

Ở đây, hình ảnh được đặt bên cạnh văn bản. Hình ảnh tăng lên chiều cao mà văn bản cần. Nếu không có text-box, hình ảnh luôn cao hơn một chút. Với text-box, hình ảnh có thể căn chỉnh hoàn hảo với nội dung văn bản.

Thử trên CodePen

Hãy lưu ý rằng khoảng trắng nằm phía trên dòng văn bản được định dạng đầu tiên và phía dưới dòng văn bản được định dạng cuối cùng trong các trường hợp có tính năng xuống dòng.

Trong ví dụ sau, hãy lưu ý cách tính năng này thích ứng một cách hợp lý với sự thay đổi trong writing-mode. Hãy thử thay đổi văn bản, xem cách bố cục tiếp tục được căn chỉnh.

Thử trên CodePen

Tiếp tục nghiên cứu

Bạn muốn tìm hiểu thêm? Danh sách đường liên kết sau đây cung cấp nhiều thông tin bổ sung và trường hợp sử dụng.