• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Animacja scrollowania svg path

Object Storage Arubacloud
0 głosów
235 wizyt
pytanie zadane 16 kwietnia 2023 w JavaScript przez AgentTecza Obywatel (1,810 p.)

Cześć!,

Uczę się javascripta i zrobiłem animację, która moim zdaniem jest fajna i ładna, lecz chciałbym dodać do niej jeszcze 2 rzeczy ale niestety nie wiem jak to zrobić.
Mianowicie pierwszą rzeczą jest to żeby pomiędzy tymi liniami był biały kolor a na zewnątrz był kolor czarny. Nie wiem czy muszę dodać do tego jakiś path po środku czy mogę jakoś ułożyć diva w taki sposób by był idealnie dopasowany.
Efekt który chciałbym uzyskać (na tym zdjęciu nie widać tych niebieskich lin tak dokładnie):

2 rzeczą którą nie wiem jak zrobić jest to by animacja była wykonywana dopiero wtedy gdy użytkownik widzi to, a nie wcześniej i gdy nie widzi również by stała na efekcie końcowym. Również chciałbym to lekko przyspieszyć bo nie da się przeskrolować do końca tak by animacja była zrobiona.
HTML:
 

 <section style="height: 150vh; background-color: black;">
            <div id="svg-container2">
              <svg viewBox="0 0 1440 320" style="transform: scaleX(-1)">
                <path id="my-path-2" class="path-2" d="M0,256L48,229.3C96,203,192,149,288,133.3C384,117,480,139,576,176C672,213,768,267,864,266.7C960,267,1056,213,1152,181.3C1248,149,1344,139,1392,133.3L1440,128" />
              </svg>
            </div>  
            <svg viewBox="0 0 1440 320">
              <path id="my-path" class="path-" d="M0,256L48,229.3C96,203,192,149,288,133.3C384,117,480,139,576,176C672,213,768,267,864,266.7C960,267,1056,213,1152,181.3C1248,149,1344,139,1392,133.3L1440,128" />
            </svg>
          </section>

CSS:
 

svg {
    width: 100%;
    height: 30%;
    z-index: -1;
}

path {
    stroke: #0099ff;
    stroke-width: 2;
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    fill: none;
}

JS:

const path1 = document.querySelector("#my-path");
const pathLength1 = path1.getTotalLength();
path1.style.strokeDasharray = pathLength1;
path1.style.strokeDashoffset = pathLength1;

const path2 = document.querySelector("#my-path-2");
const pathLength2 = path2.getTotalLength();
path2.style.strokeDasharray = pathLength2;
path2.style.strokeDashoffset = pathLength2;

window.addEventListener("scroll", () => {
    const scrollTop = window.pageYOffset;
    const scrollHeight = document.body.scrollHeight - window.innerHeight;
    const scrollFraction = scrollTop / scrollHeight;

    const drawLength1 = pathLength1 * scrollFraction;
    path1.style.strokeDashoffset = pathLength1 - drawLength1;

    let drawLength2 = pathLength2 * scrollFraction;
    let offset2 = pathLength2 - drawLength2;
    if (scrollFraction === 1) {
      offset2 = pathLength2 - 1;
    }
    path2.style.strokeDasharray = pathLength2;
    path2.style.strokeDashoffset = offset2;

    if (drawLength2 <= 0) {
      path2.style.strokeDasharray = pathLength2;
      path2.style.strokeDashoffset = pathLength2;
    }
});


Z góry dziękuje za pomoc <3!

komentarz 18 kwietnia 2023 przez VBService Ekspert (254,480 p.)
edycja 18 kwietnia 2023 przez VBService

Sprawdź, małe zmiany w Twoim kodzie, może będzie pomocne w dalszych "eksperymentach" z kodem. laugh

 

Sprawdź też w kwestii

jak zrobić jest to by animacja była wykonywana dopiero wtedy gdy użytkownik widzi

Intersection Observer API: [ 1 ] [ 2 ] [ 3 ]

 

komentarz 19 kwietnia 2023 przez AgentTecza Obywatel (1,810 p.)
Będę kombinował chociaż już próbowałem użyć Intersection Observer API,
ale dziękuje za podpowiedź i optymalizacje mojego kodu.
A czy masz jakąś podpowiedź jeśli chodzi o zrobienie białego koloru pomiędzy?
komentarz 19 kwietnia 2023 przez VBService Ekspert (254,480 p.)

Jak sam napisałeś

dodać do tego jakiś path po środku

też bym był za taką opcją.

<section style="height: 150vh;">
  <svg viewBox="0 0 1440 320" style="transform: scaleX(-1)">
    <path id="my-path-2" d="M0,256L48,229.3C96,203,192,149,288,133.3C384,117,480,139,576,176C672,213,768,267,864,266.7C960,267,1056,213,1152,181.3C1248,149,1344,139,1392,133.3L1440,128" />
  </svg>

  <!-- TU WSTAWIŁBYM KOD -->

  <svg viewBox="0 0 1440 320">
    <path id="my-path-1" d="M0,256L48,229.3C96,203,192,149,288,133.3C384,117,480,139,576,176C672,213,768,267,864,266.7C960,267,1056,213,1152,181.3C1248,149,1344,139,1392,133.3L1440,128" />
  </svg>
</section>

 

komentarz 19 kwietnia 2023 przez AgentTecza Obywatel (1,810 p.)
Tak wiem próbowałem to robić tylko nie za bardzo wiem jak idealnie wygenerować taki path po środku
komentarz 20 kwietnia 2023 przez VBService Ekspert (254,480 p.)

A sprawdź to: on-line.

Korzystałem z aplikacji: on-line.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 6 lipca 2022 w JavaScript przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 379 wizyt
pytanie zadane 9 lipca 2015 w HTML i CSS przez LooRis Nowicjusz (230 p.)
0 głosów
1 odpowiedź 496 wizyt
pytanie zadane 15 czerwca 2017 w HTML i CSS przez Vorex444 Dyskutant (9,610 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...