Cách căn giữa chữ trong HTML
Dùng thuộc tính CSS text-align: center trên phần tử chứa chữ:
text-align căn giữa mọi dòng bên trong phần tử, kể cả những thứ inline như link, ảnh và nút. Thuộc tính này được kế thừa, nên đặt nó trên một khung chứa sẽ căn giữa chữ ở mọi thứ bên trong.
Đặt trên khối, không phải trên span
text-align hoạt động trên các khối chứa: <p>, <div>, tiêu đề, ô bảng. Trên <span> hay <a> nó không làm gì cả, vì phần tử inline chỉ rộng bằng chữ của nó và không còn khoảng trống để căn giữa:
Cách sửa luôn giống nhau: chuyển text-align: center lên khối cha.
Căn giữa khối, căn các dòng về đầu
Với đoạn văn nhiều dòng, chữ căn giữa hoàn toàn rất khó đọc vì mỗi dòng bắt đầu ở một chỗ khác nhau. Cách làm phổ biến là căn giữa khối trên trang và giữ chữ bên trong căn về đầu dòng:
margin-inline: auto căn giữa một khối có chiều rộng, còn text-align căn giữa các dòng bên trong nó. Căn giữa khung (bằng flexbox, grid hoặc margin) có ở trang căn giữa div.
Căn giữa chữ theo chiều dọc
text-align chỉ hoạt động theo chiều ngang. Để căn giữa chữ theo chiều dọc trong một khung, hãy biến khung đó thành flex container:
align-items: center căn giữa theo chiều dọc, justify-content: center căn giữa theo chiều ngang, và text-align: center vẫn căn giữa các dòng so với nhau khi có nhiều dòng. Mẹo line-height chỉ dùng được cho một dòng chữ trong khung có chiều cao biết trước.
Mọi giá trị của text-align
| Giá trị | Kết quả |
|---|---|
start (mặc định) | Dòng bắt đầu ở mép đầu: bên trái với tiếng Anh, bên phải với tiếng Ả Rập và tiếng Do Thái |
end | Dòng kết thúc ở mép cuối |
center | Các dòng được căn giữa |
justify | Các dòng được giãn ra chạm cả hai mép (trừ dòng cuối) |
left, right | Luôn bên trái hoặc luôn bên phải, bất kể ngôn ngữ |
Nên dùng start và end thay cho left và right: chúng tự đảo chiều với các ngôn ngữ viết từ phải sang trái, như khung cuối cho thấy.
Thẻ center cũ
Các trang cũ căn giữa chữ bằng <center> hoặc bằng thuộc tính align:
<center>Old way</center>
<p align="center">Also old</p>
Cả hai đều đã lỗi thời. Trình duyệt vẫn hiển thị chúng để các trang cũ không bị hỏng, nhưng chúng không hợp lệ trong HTML hiện nay và trộn bố cục vào markup. Hãy dùng text-align: center trong CSS.
Thụt lề chữ
HTML không có thẻ thụt lề, và các dấu cách gõ vào sẽ bị gộp lại (xem khoảng trắng trong HTML). Thụt lề là việc của CSS:
| Thụt lề | CSS |
|---|---|
| Chỉ dòng đầu | text-indent: 2em |
| Cả khối | padding-inline-start: 2em hoặc margin-inline-start: 2em |
| Thụt treo (dòng đầu lồi ra) | padding-inline-start: 2em; text-indent: -2em |
em gắn khoảng thụt lề với cỡ chữ, nên nó co giãn theo chữ.
Lỗi thường gặp
text-aligntrên phần tử inline. Hãy đặt nó lên khối cha.- Mong
text-aligncăn giữa một khung. Nó căn giữa chữ và nội dung inline, không phải một khối có chiều rộng. Dùngmargin-inline: autohoặc flexbox cho khung. - Dùng
<center>hoặcalign="center". Đã lỗi thời. Hãy dùng CSS. - Căn giữa đoạn văn dài. Chỉ căn giữa tiêu đề và dòng ngắn; giữ phần nội dung căn về đầu dòng.
- Thụt lề bằng
hay dấu cách. Hãy dùngtext-indenthoặc padding.
Câu hỏi thường gặp
Làm sao căn giữa chữ trong HTML?
Thêm text-align: center vào phần tử chứa chữ, ví dụ <p style="text-align: center"> hoặc một quy tắc CSS như h1 { text-align: center; }. Nó căn giữa mọi dòng chữ và nội dung inline bên trong phần tử đó.
Tại sao text-align: center không có tác dụng trên span?
Span là phần tử inline, nên nó chỉ rộng bằng chữ bên trong và không còn chỗ để căn giữa. Hãy đặt text-align: center lên khối cha (thẻ <p> hoặc <div> bao quanh nó), hoặc cho span display: block.
Làm sao căn giữa chữ theo chiều dọc?
Biến khung chứa thành flex box: display: flex; align-items: center; (thêm justify-content: center để căn giữa cả chiều ngang). Với một dòng duy nhất trong khung có chiều cao cố định, đặt line-height bằng chiều cao cũng được.
Thẻ <center> còn hợp lệ không?
Không. <center> và thuộc tính align="center" đã lỗi thời. Trình duyệt vẫn hiển thị chúng cho các trang cũ, nhưng code mới nên dùng text-align: center trong CSS.
Làm sao thụt lề chữ trong HTML?
Dùng CSS. text-indent: 2em thụt dòng đầu của đoạn văn, còn padding-inline-start: 2em hoặc margin-inline-start: 2em thụt cả khối. Dấu cách hay trong văn bản không phải cách thụt lề đáng tin cậy.