Menu

Footer trong HTML: thẻ footer, ví dụ và bố cục

Phần tử <footer> khép lại một trang hoặc một phần: bản quyền, thông tin liên hệ, liên kết, thông tin tác giả. Tìm hiểu cách dựng footer cho trang web với các cột liên kết, cách giữ footer ở cuối một trang ngắn, và cách footer hoạt động bên trong bài viết.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

Đặt phần nội dung khép lại trang trong phần tử <footer>, thường là thứ cuối cùng trong <body>. Giống <header>, nó không có giao diện mặc định; CSS biến nó thành một thanh chân trang:

&copy; in ra ký hiệu ©. <small> đánh dấu dòng bản quyền là chữ in nhỏ, đó là ý nghĩa của nó trong HTML chứ không chỉ là font nhỏ hơn. Các danh sách liên kết là danh sách <ul> thật, nên phần lớn trình đọc màn hình sẽ đọc ra mỗi cột có bao nhiêu liên kết.

Trên một trang ít nội dung, footer nằm ngay dưới nội dung đó và để lại khoảng trống bên dưới. Cách khắc phục là một cột flex: khối chứa cao ít nhất bằng cửa sổ, và vùng nội dung chính chiếm hết phần chiều cao còn lại. Khối màu xám bên dưới đóng vai một cửa sổ trình duyệt:

Bỏ flex: 1 khỏi main là footer nhảy lên ngay dưới đoạn văn. Trên trang thật, hãy đặt cùng các quy tắc đó cho <body> với min-height: 100vh (và margin: 0) thay cho chiều cao cố định, để footer nằm ở cuối những trang ngắn và nằm sau nội dung ở những trang dài.

Một <footer> khép lại article hoặc section gần nhất chứa nó, nên một bài blog hay một bình luận có thể có footer riêng, ghi tác giả, ngày hoặc thẻ phân loại:

Trình đọc màn hình chỉ coi footer cấp trang là landmark contentinfo. Footer bên trong một bài viết chỉ là một nhóm bình thường, nên không cạnh tranh với footer của trang web.

Thông tin liên hệ với address

Với thông tin liên hệ của trang hoặc chủ sở hữu trang, hãy dùng <address> bên trong footer. Thẻ này chỉ dành cho thông tin liên hệ (không dành cho mọi địa chỉ bưu điện xuất hiện trong nội dung), và trình duyệt mặc định hiển thị nó bằng chữ nghiêng:

Ngắt dòng bên trong address là một trong những cách dùng hợp lý của <br>. Để tìm hiểu thêm về liên kết email, xem trang mailto.

Footer có thể chứa liên kết, danh sách, biểu mẫu (đăng ký nhận bản tin), hình ảnh và một <nav>. Nó không được chứa <header>, một <footer> khác hay <main>. Menu thứ hai ở footer có thể là một <nav> kèm nhãn để phân biệt với menu chính:

<footer>
  <nav aria-label="Footer">
    <a href="/privacy">Privacy</a>
    <a href="/terms">Terms</a>
  </nav>
</footer>

Lỗi thường gặp

  • Đặt <footer> bên ngoài <body>. Mọi thứ hiển thị đều nằm trong <body>, kể cả footer.
  • Dùng position: fixed để giữ footer ở dưới. Footer cố định che mất nội dung trên màn hình nhỏ và cần thêm padding ở khắp nơi. Hãy dùng mẫu cột flex.
  • Dùng <address> cho mọi địa chỉ. Thẻ này dành cho thông tin liên hệ của trang hoặc tác giả bài viết. Địa chỉ cửa hàng trong danh sách chi nhánh chỉ là một <p> bình thường.
  • Dựng cột liên kết bằng thẻ <br>. Hãy dùng danh sách <ul> để cấu trúc được đọc ra.
  • Ghi cứng năm cũ. Cập nhật năm bản quyền trong template, hoặc in nó ra từ máy chủ hay bước build.

Câu hỏi thường gặp

Thẻ footer trong HTML là gì?

<footer> là một phần tử ngữ nghĩa dành cho nội dung khép lại một trang hoặc một phần: bản quyền, thông tin liên hệ, liên kết liên quan hay thông tin tác giả. Đây là một khối block không có định dạng mặc định.

Footer của trang web nên có gì?

Footer thường chứa thông báo bản quyền, liên kết tới các trang pháp lý như chính sách quyền riêng tư và điều khoản, thông tin liên hệ, liên kết mạng xã hội và một sơ đồ trang ngắn. Vẫn giữ menu điều hướng chính trong <nav> ở gần đầu trang, vì không phải ai cũng cuộn tới cuối.

Làm sao giữ footer luôn ở cuối trang?

Biến body thành một cột flex cao ít nhất bằng cửa sổ (display: flex; flex-direction: column; min-height: 100vh;) và cho <main> thuộc tính flex: 1. Khi đó vùng nội dung chính giãn ra lấp khoảng trống và đẩy footer xuống dưới trên những trang ngắn.

Viết ký hiệu bản quyền trong HTML thế nào?

Dùng thực thể &copy;, hiển thị thành ©. Bạn cũng có thể gõ thẳng ký tự đó khi trang dùng <meta charset="utf-8">. Bọc dòng đó trong <small> để đánh dấu nó là chữ in nhỏ (small print).

Một trang có thể có nhiều footer không?

Có. Mỗi <article> hoặc <section> có thể có footer riêng cho thông tin tác giả hoặc thẻ phân loại. Chỉ footer không nằm trong article, aside, main, nav hay section mới là landmark contentinfo của trang đối với trình đọc màn hình.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu