Xử lý fixed header che mất nội dung khi sử dụng Hash Tag links

Tram Ho

Như chúng ta đã biết, khi click vào một thẻ a có chứa hash, như dưới đây:

Trình duyệt sẽ scroll tới vị trí của element có ID là “section-2” và nó sẽ scroll đến vị trí nhỏ nhất có thể để element đó hiển thị đầy đủ nhất trên màn hình.

Một vài vấn đề đau đầu thường gặp khi sử dụng thẻ a với hash nhằm mục đích tạo hành động scroll:

  • Có thể gây nhầm lẫn (đặc biệt là khi link đó nhảy đến một khu vực có chứa các tiêu đề khác).
  • Khi mà headerposition: fixed

Việc headerposition: fixed là mối đe dọa lớn nhất, chúng ta sẽ xem xét một vài cách xử lý vấn đề đó trong bài viết này

Dirty HTML Method

Thay vì tập trung vào việc xử lý vấn đề trước tiên như chúng ta thường làm, thì hãy xem cách xử lý vấn đề đó thích hợp cho nhiều trình duyệt trước đã.

Chúng ta sẽ không đặt id cho thẻ section (hoặc các thẻ heading) như bình thường, thay vào đó chúng ta sẽ đặt nó vào một thẻ span trống đặt bên trong section hoặc các thẻ heading. Nó sẽ không xuất hiện bên trong các thẻ đó, tuy nhiên sử dụng span cho mục đích này không phải là ý kiến hay.

Tiếp theo chúng ta sẽ styles cho thẻ span đó với giá trị của margin-toplà giá trị âm của chiều cao header. Sau đó, chúng ta sẽ đẩy header lại vị trí cũ với giá trị của padding-top bằng chiều cao của header đó.

Cuối cùng, chúng ta sẽ có được một page hoạt động đúng như ý chúng ta muốn.