Polski

Kompleksowy przewodnik po CSS scroll-margin, pozwalający na płynną nawigację ze stałymi nagłówkami dzięki przesunięciu kotwic. Poznaj praktyczne techniki dla lepszego UX.

CSS Scroll Margin: Opanowanie przesunięcia kotwic dla stałych nagłówków

Nawigacja po długich stronach internetowych ze stałymi nagłówkami często prowadzi do frustrującego doświadczenia użytkownika. Gdy użytkownik klika link kotwiczący, przeglądarka przeskakuje do elementu docelowego, ale stały nagłówek zasłania jego górną część. Właśnie tutaj z pomocą przychodzą właściwości CSS scroll-margin i scroll-padding, zapewniając prosty, ale potężny sposób na przesunięcie linków kotwiczących i zapewnienie płynnej nawigacji.

Zrozumienie problemu: Zasłanianie przez stały nagłówek

Stałe nagłówki są częstym elementem projektowym nowoczesnych stron internetowych, poprawiającym użyteczność poprzez zapewnienie stałej nawigacji. Wprowadzają one jednak pewien problem: gdy użytkownik klika wewnętrzny link (link kotwiczący) wskazujący na konkretną sekcję strony, przeglądarka przewija element docelowy na samą górę okna widokowego. Jeśli obecny jest stały nagłówek, zakrywa on górną część elementu docelowego, co utrudnia użytkownikowi natychmiastowe zobaczenie treści, którą zamierzał wyświetlić. Może to być szczególnie problematyczne na urządzeniach mobilnych z mniejszymi ekranami. Wyobraź sobie użytkownika w Tokio, który przegląda długi artykuł na swoim smartfonie; klika on link kotwiczący do konkretnej sekcji, by odkryć, że jest ona częściowo ukryta przez nagłówek. To zakłócenie pogarsza ogólne wrażenia użytkownika.

Wprowadzenie do scroll-margin i scroll-padding

CSS oferuje dwie właściwości, które pomagają rozwiązać ten problem: scroll-margin i scroll-padding. Chociaż wydają się podobne, działają inaczej i odnoszą się do różnych aspektów zachowania podczas przewijania.

W kontekście stałych nagłówków, scroll-margin-top jest zazwyczaj najważniejszą właściwością. Jednak w zależności od układu strony, może być konieczne dostosowanie również innych marginesów.

Użycie scroll-margin-top do przesunięcia dla stałego nagłówka

Najczęstszym przypadkiem użycia scroll-margin jest przesunięcie linków kotwiczących, gdy obecny jest stały nagłówek. Oto jak to zaimplementować:

  1. Określ wysokość stałego nagłówka: Użyj narzędzi deweloperskich przeglądarki, aby zbadać stały nagłówek i określić jego wysokość. To jest wartość, której użyjesz dla scroll-margin-top. Na przykład, jeśli nagłówek ma 60 pikseli wysokości, użyjesz scroll-margin-top: 60px;.
  2. Zastosuj scroll-margin-top do elementów docelowych: Wybierz elementy, które chcesz przesunąć. Zazwyczaj są to nagłówki (<h1>, <h2>, <h3>, itp.) lub sekcje, do których wskazują linki kotwiczące.

Przykład: Podstawowa implementacja

Załóżmy, że masz stały nagłówek o wysokości 70 pikseli. Oto kod CSS, którego byś użył:

h2 {
  scroll-margin-top: 70px;
}

Ta reguła CSS informuje przeglądarkę, że gdy link kotwiczący wskazuje na element <h2>, powinna ona przewinąć ten element do pozycji, w której jest co najmniej 70 pikseli przestrzeni między górną krawędzią elementu <h2> a górną krawędzią okna widokowego. Zapobiega to zakrywaniu nagłówka przez stały nagłówek.

Przykład: Zastosowanie do wielu poziomów nagłówków

Możesz zastosować scroll-margin-top do wielu poziomów nagłówków, aby zapewnić spójne zachowanie na całej stronie:

h1, h2, h3 {
  scroll-margin-top: 70px;
}

Przykład: Użycie klasy dla określonych sekcji

Zamiast celować we wszystkie nagłówki, możesz chcieć zastosować przesunięcie tylko do określonych sekcji. Można to osiągnąć, dodając klasę do tych sekcji:

<section id="introduction" class="scroll-offset">
  <h2>Introduction</h2>
  <p>...</p>
</section>
.scroll-offset {
  scroll-margin-top: 70px;
}

Użycie scroll-padding-top jako alternatywy

scroll-padding-top oferuje alternatywne podejście do osiągnięcia tego samego rezultatu. Zamiast dodawać margines do elementu docelowego, dodaje dopełnienie do górnej części kontenera przewijania.

Aby użyć scroll-padding-top, zazwyczaj stosuje się go do elementu <body>:

body {
  scroll-padding-top: 70px;
}

Informuje to przeglądarkę, że obszar przewijania strony powinien mieć 70-pikselowe dopełnienie na górze. Gdy link kotwiczący zostanie kliknięty, przeglądarka przewinie element docelowy do pozycji, w której znajduje się 70 pikseli poniżej górnej krawędzi okna widokowego, skutecznie unikając stałego nagłówka.

Wybór między scroll-margin a scroll-padding

Wybór między scroll-margin a scroll-padding często sprowadza się do osobistych preferencji i konkretnego układu strony internetowej. Oto porównanie, które pomoże Ci podjąć decyzję:

W większości przypadków stosowanie scroll-margin na nagłówkach lub sekcjach jest preferowanym podejściem, ponieważ zapewnia większą elastyczność. Jeśli jednak masz prosty układ ze stałym nagłówkiem i chcesz szybkiego rozwiązania, scroll-padding może być dobrą opcją.

Zaawansowane techniki i uwagi

Użycie zmiennych CSS dla łatwiejszego utrzymania kodu

Aby poprawić łatwość utrzymania kodu, możesz użyć zmiennych CSS do przechowywania wysokości stałego nagłówka. Pozwala to na łatwą aktualizację przesunięcia w jednym miejscu, jeśli wysokość nagłówka ulegnie zmianie.

:root {
  --header-height: 70px;
}

h1, h2, h3 {
  scroll-margin-top: var(--header-height);
}

/* Example of usage with scroll-padding-top */
body {
  scroll-padding-top: var(--header-height);
}

Obsługa dynamicznych wysokości nagłówka

W niektórych przypadkach stały nagłówek może dynamicznie zmieniać wysokość, na przykład na różnych rozmiarach ekranu lub gdy użytkownik przewija stronę w dół. W takich sytuacjach będziesz musiał użyć JavaScriptu do dynamicznej aktualizacji scroll-margin-top lub scroll-padding-top.

Oto podstawowy przykład, jak to zrobić:

function updateScrollMargin() {
  const headerHeight = document.querySelector('header').offsetHeight;
  document.documentElement.style.setProperty('--header-height', `${headerHeight}px`);
}

// Call the function on page load and when the window is resized
window.addEventListener('load', updateScrollMargin);
window.addEventListener('resize', updateScrollMargin);

Ten kod JavaScript pobiera wysokość elementu <header> i odpowiednio ustawia zmienną CSS --header-height. Następnie CSS używa tej zmiennej do ustawienia scroll-margin-top lub scroll-padding-top.

Względy dostępności

Chociaż scroll-margin i scroll-padding głównie rozwiązują problemy wizualne, istotne jest uwzględnienie dostępności. Upewnij się, że dodawane przesunięcie nie wpływa negatywnie na użytkowników, którzy polegają na czytnikach ekranu lub nawigacji za pomocą klawiatury.

W większości przypadków domyślne zachowanie scroll-margin i scroll-padding jest dostępne. Zawsze jednak dobrym pomysłem jest przetestowanie strony internetowej za pomocą technologii wspomagających, aby upewnić się, że nie ma żadnych nieoczekiwanych problemów.

Kompatybilność z przeglądarkami

scroll-margin i scroll-padding mają doskonałą kompatybilność z przeglądarkami. Są one obsługiwane przez wszystkie nowoczesne przeglądarki, w tym Chrome, Firefox, Safari, Edge i Opera. Starsze przeglądarki mogą nie obsługiwać tych właściwości, ale ulegną one łagodnej degradacji, co oznacza, że linki kotwiczące nadal będą działać, ale przesunięcie nie zostanie zastosowane.

Aby zapewnić kompatybilność ze starszymi przeglądarkami, można użyć polyfilla lub obejścia w CSS. Jednak w większości przypadków nie jest to konieczne, ponieważ zdecydowana większość użytkowników korzysta z nowoczesnych przeglądarek, które obsługują te właściwości.

Rozwiązywanie typowych problemów

Oto niektóre typowe problemy, które możesz napotkać podczas korzystania z scroll-margin i scroll-padding, wraz ze wskazówkami dotyczącymi ich rozwiązywania:

Przykłady z życia wzięte

Spójrzmy na kilka rzeczywistych przykładów użycia scroll-margin i scroll-padding na popularnych stronach internetowych:

Te przykłady pokazują wszechstronność scroll-margin i scroll-padding oraz to, jak można ich używać do poprawy doświadczeń użytkownika na różnych stronach internetowych. Na przykład, rozważmy firmę softwarową z Bangalore, która utrzymuje portal z dokumentacją online zawierający setki stron; użycie `scroll-margin` na każdym nagłówku gwarantuje spójne i płynne doświadczenie niezależnie od urządzenia czy przeglądarki użytkownika.

Podsumowanie

scroll-margin i scroll-padding to niezbędne właściwości CSS do tworzenia płynnej i przyjaznej dla użytkownika nawigacji na stronach internetowych ze stałymi nagłówkami. Rozumiejąc, jak działają te właściwości i jak je skutecznie stosować, możesz zapewnić, że użytkownicy będą mogli łatwo nawigować po Twojej stronie i bez frustracji znajdować poszukiwane treści. Od prostego bloga po złożoną platformę e-commerce skierowaną do klientów na zróżnicowanych rynkach, takich jak São Paulo i Singapur, wdrożenie `scroll-margin` gwarantuje spójną, przyjemną i intuicyjną nawigację, poprawiając tym samym użyteczność i ogólny sukces Twojej strony internetowej. Zatem, wykorzystaj te właściwości i podnieś poziom doświadczeń użytkowników w swoich projektach internetowych już dziś!

Dalsza nauka

CSS Scroll Margin: Opanowanie przesunięcia kotwic dla stałych nagłówków | MLOG