Mã html chiều cao dòng
số. a value value (as 1, 1. 2, 2, 3. ) Chiều cao của dòng được xác định bằng số nhân với giá trị cỡ chữ .my-height { font-size: 14px; /* cỡ chữ 14px */ line-height: 1.2; /* chiều cao dòng = 1.2 * 14 = 16.8px */ } Giá trịMô tảDemonormalChiều cao dòng bình thường. Đây là mặc địnhDemo ❯sốMột số sẽ được nhân với cỡ chữ hiện tại để đặt chiều cao dòngDemo ❯chiều dàiMột chiều cao dòng cố định theo px, pt, cm, v.v. Bản trình diễn ❯%Chiều cao dòng theo phần trăm của kích thước phông chữ hiện tại Bản trình diễn ❯initialĐặt thuộc tính này thành giá trị mặc định của nó. Đọc về khởi tạo Kế thừa thuộc tính này từ phần tử cha của nó. Đọc về thừa kế Bài viết được dịch từ bài Deep Dive CSS. chỉ số phông chữ, chiều cao dòng và căn dọc của tác giả Vincent De Oliveira 6 và 7 là các thuộc tính CSS đơn giản. Đơn giản đến nỗi hầu hết chúng ta ta đều bị thuyết phục rằng mình đã hoàn toàn hiểu cách chúng ta hoạt động và cách chúng ta sử dụng. Nhưng không phải như vậy. Thực tế chúng phức tạp, có thể là phức tạp nhất, do chúng đóng vai trò chính trong việc tạo thành một trong những tính năng ít được biết đến của CSS. bối cảnh định dạng nội tuyếnVí dụ, 8 có thể nhận giá trị là một độ dài hoặc một giá trị không đơn vị, với giá trị mặc định là 9. Được rồi, vậy bình thường nghĩa là như thế nào? . Chúng ta biết rằng giá trị không đơn vị của 8 có tính tương phản với 3, nhưng vấn đề là 4 khác nhau đối với các họ phông chữ khác nhau, vậy thì 8 luôn luôn giống nhau hay khác nhau? . 2? Tìm hiểu sâu về một cơ chế không-đơn-giản của CSS Please say about 3 beforeVui lòng xem đoạn mã HTML đơn giản bên dưới, thẻ 9 chứa 3 thẻ 0, mỗi thẻ sử dụng một thẻ 1 khác nhau
Sử dụng cùng một 3 với các họ phông chữ khác nhau sẽ tạo ra các phần tử có chiều cao khác nhauCác họ phông chữ khác nhau, cùng cỡ chữ, sinh ra các chiều cao khác nhau Tuy chúng ta đoán trước được việc đó, nhưng tại sao 4 không sinh ra các phần tử với chiều cao 100px? . Helvetica. Nhóm 115px. 97px và Catamaran. 164pxElement section with font-size. 100px has height change from 97px to 164px Dù có vẻ hơi kỳ lạ, nhưng điều này hoàn toàn nằm trong dự đoán. Lý do nằm ở bản thân các phông chữ. Dưới đây là cách các chữ cái hoạt động
Vui lòng mở phông chữ Catamaran bằng FontForge để xem các số
The only number of font when view on FontForge Điều đó có nghĩa là phông chữ Catamaran sử dụng 1100 + 540 đơn vị trên 1000 đơn vị em-square, kết quả là 164px khi thiết lập giá trị 4. Chiều cao được tính toán (computed height) này định nghĩa vùng nội dung của một phần tử và tôi sẽ đề cập đến khái niệm này trong suốt phần còn lại của bài viết. Bạn có thể coi content-area là vùng thuộc tính 5 được áp dụng (điều này cũng không hoàn toàn chính xác)Chúng ta có thể dự đoán rằng độ cao của chữ cái trong hoa là 68px (680 đơn vị) và chữ cái trong thường (x-height) là 49px (485 đơn vị). Kết quả là 6 = 49px và 7 = 100px, không phải 164px (may mắn thay, 8 là giá trị dựa trên 3, không phải là chiều cao được tính toán)Phông chữ Catamaran. UPM - Units Per Em - và lượng pixel tương ứng khi sử dụng font-size. 100px Trước khi tìm hiểu kỹ hơn, hay xem những thứ trên có ý nghĩa gì. Khi một phần tử 9 được hiển thị trên màn hình, nó có thể được tạo bởi nhiều dòng, dựa trên độ rộng của nó. Mỗi dòng được tạo bởi một hoặc nhiều phần tử nội tuyến (thẻ HTML hoặc các phần tử nội tuyến vô danh như văn bản) và mỗi dòng này được gọi là một hộp dòng. Chiều cao của một hộp dòng dựa trên chiều cao của các phần tử con của nó. Do đó, trình duyệt sẽ tính toán chiều cao của mỗi phần tử nội tuyến, từ đó tính toán chiều cao của hộp dòng (từ điểm cao nhất đến điểm thấp nhất của các phần tử con). Kết quả là một line-box luôn đủ cao để có thể chứa tất cả các phần tử của nó (mặc định là như vậy)
Nếu chúng ta chỉnh sửa mã HTML ở trên thành thế này
nó sẽ sinh ra 3 line-box
Một thẻ 9 (đường viền đen) được tạo thành từ các hộp dòng (đường viền trắng) bao gồm các phần tử nội tuyến (đường viền trơn) và các phần tử nội tuyến vô danh (đường viền trang nhã)Chúng ta biết rằng line-box thứ 2 cao hơn các line-box khác, làm nội dung của các phần tử con của nó, và chính xác hơn là phần tử sử dụng phông chữ Catamaran Phần khó khăn trong việc tạo thành line-box là chúng ta không thực sự nhìn thấy hay kiểm soát được nó bằng CSS. Ngay cả việc áp dụng thuộc tính nền vào 3 cũng không cho chúng ta một dấu hiệu trực tiếp quan trọng về chiều cao của line-box đầu tiên 8. các vấn đề và hơn thế nữaTới giờ, tôi đã giới thiệu cho các bạn 2 khái niệm. khu vực nội dung và hộp dòng. Nếu bạn nhớ, tôi đã nói rằng chiều cao của một line-box được tính toán dựa trên chiều cao của các phần tử con của nó chứ không nói rằng nó được tính toán dựa trên chiều cao của khu vực nội dung của các phần tử con . Điều này tạo ra một sự khác biệt lớn Nghe có vẻ lạ, nhưng một phần tử nội tuyến có 2 chiều cao khác nhau. high content-area và high virtual-area (tôi đã tạo ra khái niệm virtual-area để đại diện cho chiều cao mà chúng ta nhìn thấy được, bạn sẽ không thấy trong đặc tả đâu)
Inline section inline có 2 chiều khác nhau Như vậy, điều này đã phá vỡ quan niệm thông thường rằng 8 là khoảng cách giữa các đường cơ sở. Trong CSS thì không như vậyTrong CSS, line-height không phải là khoảng cách giữa các đường cơ sở Chiều cao khác nhau giữa khu vực ảo và khu vực nội dung được gọi là dẫn đầu. Một nửa dẫn đầu được cộng thêm vào phía trên của khu vực nội dung, nửa còn lại được cộng thêm vào phía dưới. Do khu vực nội dung đó luôn ở giữa khu vực ảo dựa trên các giá trị được tính toán, 8 (khu vực ảo) có thể bằng, cao hơn hoặc thấp hơn khu vực nội dung. Trong trường hợp khu vực ảo thấp hơn, hàng đầu sẽ âm thanh và một hộp dòng trông sẽ thấp hơn các phần tử của nóCòn có các loại phần tử nội tuyến khác
Với các phần tử nội tuyến riêng biệt này, chiều cao được tính dựa trên các thuộc tính 3, 4 và 5 của chúng. If 3 is 7, thì 8 used and content-area will equal with 8Các phần tử nội tuyến thay thế, inline-block/inline-* và blocksified có vùng nội dung bằng với chiều cao, hoặc chiều cao dòng, của chúng Tuy nhiên, vấn đề của chúng tôi là giá trị của 9 của 8 là bao nhiêu? Do đó, hãy quay lại với FontForge. em-square của Catamaran là 1000, nhưng chúng ta thấy nhiều giá trị tăng/giảm khác nhau
Trong trường hợp của chúng tôi, phông chữ Catamaran định nghĩa khoảng cách dòng với giá trị là 0, nên 2 sẽ bằng với khu vực nội dung, tức là 1640 đơn vị, hay 1. 64Để so sánh, phông chữ Arial định nghĩa em-square với giá trị 2048 đơn vị, Ascender = 1854, Descender = 434 và line gap = 67. Nghĩa là với 4 thì content-area sẽ là 112px (1117 đơn vị) (Người dịch. (1854 + 434) * 1000 / 2048 = 1117,1875) và 2 là 115px (1150 đơn vị hay 1. 15). Tất cả các số này đều là của phông chữ riêng và được thiết lập bởi người thiết kế phông chữLàm vậy, hiển nhiên việc đặt 6 là một cách làm xấu. Tôi xin nhắc lại rằng các giá trị không đơn vị có tính tương phản với 3, không tương thích với khu vực nội dung và trường hợp khu vực ảo thấp hơn khu vực nội dung là nguồn gốc của rất nhiều vấn đềUse line-height. 1 could create a line-box thấp hơn content-area Nhưng không chỉ có mỗi 6. Trong số 1117 phông chữ được cài đặt trên máy của tôi (phải, tôi cài đặt tất cả các phông chữ của Google Web Fonts), 1059 phông chữ, khoảng 95%, có 8 lớn hơn 1. 8 of all fonts that dao động từ 0. 618 tới 3. 378. You just read true rồi đấy, 3. 378Một chút chi tiết nữa về công việc line-box tính toán
|