scroll animation mit javascript?

germanils  31.01.2022, 13:48
gibt es eine bessere Lösung für mein Vorhaben

Was genau ist dein Vorhaben?

BenIEbelt 
Fragesteller
 31.01.2022, 14:32

Die beiden Elemente (pic - h1) verschmelzen beim scrollen quasi zu einem Kopf der Seite.. evtl ensteht eine nav bar daraus, dass soll nur ein bisschen schöner animiert werden.

Lezurex  31.01.2022, 13:49

Was hat das jetzt mit Scrollen zu tun? Du registrierst zwar einen Listener, ja, aber selber was am scrollen ändern tust du ja nicht... Was ist dein Ziel?

BenIEbelt 
Fragesteller
 31.01.2022, 14:13

Die beiden Elemente sind Standardmäßig wie im else Teil erwähnt positioniert.

Der if Teil wird ausgeführt und die Elemente ändern ihre Position (sobald man scrollt).

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
window.onscroll = scrollFunction;

So kannst du den Code in deiner ersten Zeile verkürzen.

Zur Frage, auch wenn ich bei deinen Code garkeinen Zusammenhang mit deiner Frage sehe:

Mit folgender CSS-Änderung kannst du einstellen, dass das Scrollen smooth sein soll:

html {
 scroll-behavior: smooth;
}
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

BenIEbelt 
Fragesteller
 31.01.2022, 14:20

Entschuldigung, ich habe sie schlecht formuliert.

Das Script funktioniert ohne Probleme und tut was es soll. Jedoch ändern die beiden Elemente ihre Position so schlagartig.. Ich hätte dass gern etwas smoother =)

0
MrAmazing2  31.01.2022, 14:30
@BenIEbelt

Ah. Da brauchst du einfach folgende CSS-Eigenschaft bei den Elementen:

transition: margin 0.5s;

1
BenIEbelt 
Fragesteller
 31.01.2022, 14:36
@MrAmazing2

JAAA =) genau dass war es.. Vielen vielen Dank.

..dass Script kann ich so lassen ? oder kann ich die verschiedenen Style befehle pro Element auch in eine Zeile packen ?

1
MrAmazing2  31.01.2022, 14:49
@BenIEbelt

Kannst du so lassen. Kompakter geht's fast nicht.

Du könntest (vor dem if)

document.getElementById("pic")

und

document.getElementById("h1")

in Variablen speichern, und die dann im if-else benutzen, dann wär der Code horizontal nicht so breit.

Aber ansonsten.. Du könntest natürlich die CSS Sachen in eine CSS-Klasse auslagern, und die dann mit

element.classList.add("klassenname")

hinzufügen, bzw. sie mit

element.classList.remove("klassenname")

wieder entfernen.

1
BenIEbelt 
Fragesteller
 31.01.2022, 14:54
@MrAmazing2

Danke geniale Idee... manchmal kann man den Wald vor lauter Bäumen nicht sehen =)

1

Schau dir mal jQuery an. Dort gibt es eine animate Funktion, mit welcher du sagen kannst, animiere von hier zu hier

Ansonsten kann ich aber auch das arbeiten mit Klassen empfehlen und dann in CSS animieren


BenIEbelt 
Fragesteller
 31.01.2022, 14:23

Danke für die Tip's =)

0