Průvodce pro webové vývojáře

Hladké posouvání: Průvodce pro webové vývojáře

Plynulé posouvání je technika, která se využívá při vývoji webových stránek pro dosažení plynulého pohybu stránky při posouvání. Místo náhlého skoku na dané místo, animuje posun, což výrazně zlepšuje celkový dojem z navigace.

Tento podrobný průvodce pomůže webovým vývojářům implementovat hladké posouvání s využitím JavaScriptu.

Hladké posouvání spočívá v plynulém přesunu webové stránky do požadované sekce, na rozdíl od okamžitého přeskočení. Tento přístup zvyšuje uživatelskou přívětivost a celkově zlepšuje zážitek z prohlížení.

Přínosy plynulého posouvání

Hladké posouvání může vylepšit uživatelské rozhraní webových stránek hned několika způsoby:

  • Zlepšuje vizuální dojem, protože eliminuje prudké a nečekané posuny. Dodává webu eleganci.
  • Podporuje zapojení uživatelů díky poskytnutí plynulého posouvání. Motivuje tak uživatele k dalšímu prozkoumávání obsahu.
  • Usnadňuje navigaci, zvláště při práci s rozsáhlými webovými stránkami nebo při přecházení mezi různými oddíly.

Chcete-li implementovat hladké posouvání, můžete upravit standardní chování posouvání pomocí JavaScriptu.

Struktura HTML

Nejprve vytvořte základní HTML strukturu s různými sekcemi a navigací pro přecházení mezi nimi.

  <html lang="cs">
    <head>
       <meta charset="UTF-8" />
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
       <link rel="stylesheet" href="https://wilku.top/a-guide-for-web-developers/./style.css" />
       <title>Průvodce hladkým posouváním pro vývojáře webu</title>
    </head>
    <body>
        <nav>
           <ul>
              <li><a href="#section1">Sekce 1</a></li>
              <li><a href="#section2">Sekce 2</a></li>
              <li><a href="#section3">Sekce 3</a></li>
           </ul>
        </nav>
        <section id="section1">
            <h2>Sekce 1</h2>
        </section>
        <section id="section2">
           <h2>Sekce 2</h2>
        </section>
        <section id="section3">
           <h2>Sekce 3</h2>
        </section>
        <script src="https://wilku.top/a-guide-for-web-developers/./script.js"></script>
    </body>
  </html>
 

Tento HTML kód se skládá z navigační lišty se třemi kotvami. Každá z nich má atribut href, který odkazuje na specifickou sekci na stránce (např. sekce1, sekce2, sekce3). Tím je zajištěno, že kliknutím na odkaz dojde k přesunu na odpovídající cílový prvek.

CSS stylování

Dále pomocí CSS dodáme stránce vzhled a přehlednost. V souboru style.css vložte následující:

 * {
     margin: 0;
     padding: 0;
     box-sizing: border-box;
 }
 body {
     font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
 }
 nav {
     background: #fff;
     box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.25);
     position: sticky;
     top: 0;
     padding: 30px;
 }
 nav ul {
    display: flex;
    gap: 10px;
    justify-content: center;
 }
 nav ul li {
     list-style: none;
 }
 nav ul li a {
     border-radius: 5px;
     border: 1.5px solid #909090;
     text-decoration: none;
     color: #333;
     padding: 10px 20px;
 }
 section {
     height: 100vh;
     display: flex;
     align-items: center;
     justify-content: center;
 }

Díky tomuto CSS se odkazy zobrazí jako tlačítka a každá sekce bude mít výšku celého okna prohlížeče. Nicméně, kliknutí na odkaz způsobí, že se prohlížeč okamžitě přesune na danou sekci bez animace.

Implementace JavaScriptu

Chcete-li přidat hladkou animaci při kliknutí na odkaz, využijeme metodu scrollIntoView(). Tato metoda je součástí objektu Element a umožňuje plynulé posunutí prvku do viditelné oblasti prohlížeče.

Když je tato metoda zavolána, prohlížeč upraví pozici posouvání kontejneru (např. okna) tak, aby byl daný element vidět.

Vložte následující kód do souboru script.js. Nejdříve definujte událost DOMContentLoaded, která se spustí až po načtení celého DOM. Zajistí se tak, že se kód spustí až ve chvíli, kdy je DOM připraven na manipulaci.

 document.addEventListener("DOMContentLoaded", makeLinksSmooth); 

Dále definujeme funkci makeLinksSmooth(). Nejprve si vybereme všechny kotvy v navigaci, protože chceme upravit jejich výchozí chování. Poté projdeme všechny odkazy a přidáme jim event listener pro událost kliknutí.

function makeLinksSmooth() {
  const navLinks = document.querySelectorAll("nav a");
    navLinks.forEach((link) => {
    link.addEventListener("click", smoothScroll);
  });
}

Nakonec definujeme funkci smoothScroll(), která přijme objekt události. Použijeme funkci preventDefault(), abychom zabránili výchozí akci prohlížeče po kliknutí na odkaz. Následující kód ji nahradí.

Získejte hodnotu href z aktuální kotvy a uložte ji do proměnné. Tato hodnota bude ID sekce s předponou „#“. Použijeme querySelector() k získání dané sekce. Pokud existuje targetElement, zavoláme metodu scrollIntoView() s parametrem „smooth“ v objektu, abychom docílili plynulého posuvu.

function smoothScroll(e) {
  e.preventDefault();
  const targetId = this.getAttribute("href");
  const targetElement = document.querySelector(targetId);

  if (targetElement) {
    targetElement.scrollIntoView({ behavior: "smooth", });
  }
}

Výsledkem je webová stránka, která se bude plynule posouvat do jednotlivých sekcí po kliknutí na příslušný odkaz.

Způsob posouvání můžete dále vylepšit úpravou některých aspektů.

Úprava pozice posouvání

Vertikální polohu posouvání můžete upravit pomocí vlastnosti `block` v argumentu nastavení. Hodnoty jako „start“, „center“ nebo „end“ vám umožní specifikovat část cílového prvku, na kterou se má stránka přesunout.

  targetElement.scrollIntoView({ behavior: "smooth", block: "end" });  

Přidání efektů usnadnění

Pro přirozenější a vizuálně poutavý přechod můžete na posouvání použít efekty náběhu a doběhu. Usnadňovací funkce, jako je ease-in, ease-out nebo vlastní kubická-bezierova křivka, mohou regulovat rychlost pohybu při rolování. Stejného efektu můžete dosáhnout pomocí vlastní funkce časování v CSS nebo pomocí knihoven jako je „smooth-scroll“.

html {
    scroll-behavior: smooth;

    scroll-behavior: cubic-bezier(0.42, 0, 0.58, 1);
}

Zajistěte, aby implementace hladkého posouvání fungovala správně v různých prohlížečích. Testujte a řešte případné problémy, které se mohou objevit v některých prohlížečích.

Podívejte se na web Can I Use pro zjištění podpory jednotlivých prohlížečů. Zvažte použití JavaScriptové knihovny nebo polyfill pro zajištění kompatibility mezi prohlížeči a plynulého používání pro všechny uživatele.

Hladké posouvání dodává webové stránce eleganci a zlepšuje celkový zážitek uživatele díky plynulému a vizuálně příjemnému efektu posouvání. Díky tomuto návodu mohou weboví vývojáři efektivně implementovat hladké posouvání za použití JavaScriptu.

Dalším doladěním chování, přidáním usnadňovacích efektů a zajištěním kompatibility mezi prohlížeči můžete ještě zlepšit uživatelský dojem z plynulého posouvání a vaše webové stránky budou atraktivnější a navigace na nich bude příjemnější.