CSS cũng là một kỹ thuật kiểu chữ kinh điển dùng để ngắt dòng bằng tay cho các khối văn bản cân bằng.
Giá trị balance
cho text-wrap
là một phần của CSS Text Level 4 (Văn bản CSS cấp 4). Hãy xem các ví dụ trong bài đăng này để tìm hiểu cách một dòng CSS này có thể cải thiện đáng kể bố cục văn bản của bạn.
Không có text-wrap: balance
; nhà thiết kế, người chỉnh sửa nội dung và nhà xuất bản
một số công cụ
để thay đổi cách các đường được cân bằng. Các tuỳ chọn tốt nhất hiện có là sử dụng <wbr>
hoặc ­
để giúp hướng dẫn bố cục văn bản đưa ra quyết định thông minh hơn về vị trí ngắt dòng và từ.
Là nhà phát triển, bạn không biết kích thước cuối cùng, cỡ chữ hay thậm chí là ngôn ngữ của dòng tiêu đề hoặc đoạn. Tất cả biến cần thiết để mang lại hiệu quả và tính thẩm mỹ xử lý xuống dòng tự động, nằm trong trình duyệt. Đây là lý do chúng ta thấy dòng tiêu đề được gói như trong hình sau:
.unbalanced {
max-inline-size: 50ch;
}
Với text-wrap: balance
trong CSS Text 4 (Văn bản CSS 4), bạn có thể yêu cầu trình duyệt
tìm ra giải pháp xuống dòng cân bằng tốt nhất cho văn bản. Trình duyệt biết tất cả các yếu tố, chẳng hạn như cỡ chữ, ngôn ngữ và khu vực được phân bổ.
Kết quả xuống dòng tự động cân bằng trong trình duyệt như sau:
.balanced {
max-inline-size: 50ch;
text-wrap: balance;
}
Sẽ rất hữu ích khi xem các thông tin này cạnh nhau, tĩnh mà không che thông tin gỡ lỗi.
Mắt bạn sẽ hài lòng hơn nhiều với khối văn bản cân bằng. Chiến dịch này thu hút tốt hơn và dễ đọc hơn.
Tìm ra sự cân bằng
Dòng tiêu đề là nội dung đầu tiên mà độc giả nhìn thấy; hình ảnh nên bắt mắt và dễ đọc. Điều này thu hút sự chú ý của người dùng và mang lại cảm giác chất lượng và sự đảm bảo. Kiểu chữ đẹp mang lại sự tự tin cho người đọc, khuyến khích họ tiếp tục đọc.
Theo truyền thống, nhiệm vụ này được thực hiện theo cách thủ công hoặc quang học, vì nhà thiết kế cân bằng văn bản để làm hài lòng mắt chứ không phải toán học. Chủ đề này thường được gọi là căn chỉnh chỉ số và căn chỉnh quang học. Đối với các ấn bản lớn như New York Times, việc cân bằng dòng tiêu đề là một chi tiết rất quan trọng về trải nghiệm người dùng.
Sự cân bằng giữa văn bản trong kiểu chữ bắt nguồn từ những ngày đầu của ngành in, khi máy in sẽ đặt chữ cái. Khi công cụ và kỹ thuật phát triển, kết quả cũng thay đổi theo. Ngày nay, nhà thiết kế có màu sắc, độ đậm, kích thước và nhiều yếu tố khác để cân bằng văn bản trong thiết kế của họ.
Tuy nhiên, trên web, bạn có ít quyền kiểm soát hơn vì tài liệu thay đổi kích thước và màu sắc dựa trên người dùng. text-wrap: balance
mang nghệ thuật cân bằng văn bản đến web theo cách tự động, dựa trên công việc và truyền thống của các nhà thiết kế trong ngành in.
Cân bằng các dòng tiêu đề
Đây sẽ và sẽ là trường hợp sử dụng chính cho text-wrap: balance
. Vẽ mắt với kích thước và làm cho mắt cân xứng và dễ đọc. Đặt tất cả tiêu đề thành chế độ ngắt dòng văn bản cân bằng bằng CSS sau:
h1,h2,h3,h4,h5,h6 {
text-wrap: balance;
}
Việc chỉ áp dụng kiểu này có thể không mang lại cho bạn kết quả như mong đợi, vì văn bản cần được ngắt dòng và do đó có độ dài dòng tối đa được áp dụng từ một nơi nào đó. Bạn sẽ thấy một max-inline-size
được đặt trên các ví dụ trong bài đăng này, kiểu này giống như max-width
nhưng có thể được đặt một lần cho bất kỳ ngôn ngữ nào.
Các điểm hạn chế
Việc cân bằng văn bản không phải là công việc miễn phí. Trình duyệt cần lặp lại các vòng lặp để khám phá giải pháp gói cân bằng nhất. Hiệu suất này chi phí được giảm thiểu bằng một quy tắc, phương thức này chỉ hoạt động với 6 dòng được gói trở xuống.
Xem xét hiệu suất
Bạn không nên áp dụng tính năng cân bằng dòng văn bản cho toàn bộ thiết kế. Đây là một yêu cầu bị lãng phí do giới hạn 6 dòng và có thể ảnh hưởng đến tốc độ hiển thị trang.
* { text-wrap: balance; }
h1, h2, h3, h4, h5, h6, blockquote { text-wrap: balance; }
Một ưu điểm lớn của tính năng này là bạn không cần phải đợi và căn thời gian xuống dòng để cân bằng với việc tải phông chữ, như bạn đang làm với JavaScript hiện nay. Chiến lược phát hành đĩa đơn trình duyệt sẽ xử lý vấn đề này!
Tương tác với thuộc tính white-space
Văn bản cân bằng cạnh tranh với thuộc tính white-space
vì một thuộc tính yêu cầu không đóng gói và thuộc tính còn lại yêu cầu đóng gói cân bằng. Hãy khắc phục vấn đề này bằng cách huỷ thiết lập thuộc tính khoảng trắng, sau đó bạn có thể áp dụng lại tính năng gói cân bằng.
.balanced {
white-space: unset;
text-wrap: balance;
}
Sự cân bằng sẽ không làm thay đổi kích thước cùng dòng của phần tử
Một số giải pháp JavaScript có lợi thế đối với văn bản cân bằng
bao bọc, vì chúng thay đổi max-width
của chính phần tử chứa. Chiến dịch này
có thêm phần thưởng là "thu nhỏ được gói" vào khối cân bằng. text-wrap:
balance
không có hiệu ứng này và có thể thấy trong ví dụ sau:
Bạn có thấy chiều rộng hiển thị từ Công cụ của Chrome cho nhà phát triển có một khoảng trống thừa ở cuối không?
Đó là vì đây chỉ là kiểu gói chứ không phải kiểu thay đổi kích thước. Vì
nhưng có một vài trường hợp mà text-wrap: balance
không thực sự tuyệt vời, ở mức
theo ý kiến của tôi. Ví dụ: tiêu đề bên trong thẻ (hoặc bất kỳ vùng chứa nào có đường viền hoặc bóng đổ).
Mỉa mai việc bao văn bản cân bằng sẽ tạo ra sự mất cân bằng với thành phần bên trong.
Giải thích ngắn gọn về kỹ thuật mà trình duyệt đang sử dụng
Trình duyệt thực hiện việc tìm kiếm nhị phân một cách hiệu quả đối với chiều rộng nhỏ nhất mà không gây ra bất kỳ dòng bổ sung nào, dừng ở một pixel CSS (không hiển thị pixel). Để giảm thiểu các bước trong tìm kiếm nhị phân, trình duyệt bắt đầu bằng 80% chiều rộng đường trung bình.