Utwórz projekt ↗
CSS / JS · KOD NA LICENCJI MIT

Pasek postępu czytania

Pokaż, ile treści zostało do końca.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Pasek postępu czytania” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Kolor akcentu. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Pasek postępu czytania

HTML

<div class="progress" role="progressbar" aria-label="Postęp czytania" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"></div><article><h2>Dobry tekst zasługuje na chwilę uwagi.</h2><p>Przewiń w dół i obserwuj pasek na górze okna.</p><h3>Rozdział 1</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 2</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 3</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 4</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 5</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 6</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 7</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 8</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 9</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p><h3>Rozdział 10</h3><p>Każdy projekt zaczyna się od małego pomysłu. Proste rozwiązania pomagają skupić się na tym, co najważniejsze: treści, czytelności i dobrym doświadczeniu użytkownika.</p></article>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
body{display:block}.progress{position:fixed;top:0;left:0;height:5px;width:0;background:#e95b30;z-index:100}article{max-width:620px;margin:auto}article h3{margin-top:45px}article p{color:#7e8a70}

JavaScript

const progress = document.querySelector('.progress');
function updateProgress(){
    const total = document.documentElement.scrollHeight - innerHeight;
    const value = total > 0 ? Math.min(scrollY / total * 100, 100) : 100;
    progress.style.width = value + '%';
    progress.setAttribute('aria-valuenow', Math.round(value));
}
addEventListener('scroll', updateProgress, {passive:true});
addEventListener('resize', updateProgress);
updateProgress();

Podobne przykłady