Gunnar Bittersmann: Parallax-Effekt

Beitrag lesen

@@Gunnar Bittersmann

Parallax-Effekt ist doch ein JavaScript-Einzeiler

Was der Einzeiler tut:

  • Der Länge des Scrollwegs ist die Höhe des gesamten Dokumenteninhalts document.documentElement.offsetHeight abzüglich der Höhe des Viewports window.innerHeight.

  • Die relative Scrollposition ist das Verhältnis der absoluten Scrollposition window.scrollY zum gesamten Scrollweg:
    window.scrollY / (document.documentElement.offsetHeight - window.innerHeight)

  • Das Verhältnis wird in Prozent umgerechnet, d.h. × 100%. * 100 passiert innerhalb von ${}; das Prozentzeichen wird an die Zahl angehangen: `${}%` (template literal).

  • Den Wert könnte man nun direkt document.documentElement.style.backgroundPositionY zuweisen. Ich bin aber kein Freund davon, Werte von CSS-Eigenschaften mit JavaScript zu ändern. Deshalb weise ich den Wert der custom property --y zu.

  • Durch html { background-position: center var(--y, top) } im Stylesheet kommt der Wert bei der CSS-Eigenschaft an. (top ist der Defaultwert, wenn --y nicht anderswo gesetzt ist.)

Der Rest des Scripts sorgt dafür, dass ein scroll-Eventhandler gesetzt wird, sofern der Nutzer seinem Browser nicht gesagt hat, dass er lieber auf zu viel Bewegung auf der Seite verzichtet.

🖖 Живіть довго і процвітайте

--
When the power of love overcomes the love of power the world will know peace.
— Jimi Hendrix
0 46

Media Query nur für mobile Geräte

Killua
  • css
  1. 0
    Gunnar Bittersmann
    1. 0
      Tabellenkalk
      1. 0
        Tabellenkalk
        1. 0
          Gunnar Bittersmann
          • menschelei
          1. 0
            Tabellenkalk
            1. 0
              MudGuard
            2. 0
              Gunnar Bittersmann
              1. 0
                Tabellenkalk
    2. 0
      Killua
      1. 1

        Parallax-Effekt

        Gunnar Bittersmann
        • inclusive design
        • javascript
        1. 0
          Killua
        2. 0
          Gunnar Bittersmann
          • typografie
          1. 0
            Tabellenkalk
            1. 0
              Gunnar Bittersmann
              1. 0
                Der Martin
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Auge
              2. 0
                Killua
                1. 0
                  Gunnar Bittersmann
                  • zu diesem forum
        3. 0
          Gunnar Bittersmann
          • css
          • javascript
  2. 0
    Matthias Scharwies
    1. 0
      Killua
      1. 0
        Rolf B
        1. 0
          Killua
          1. 0
            Der Martin
            1. 0
              Rolf B
              1. 0
                Der Martin
                1. 0
                  Rolf B
                  1. 0
                    Der Martin
                    1. 0
                      Killua
                      1. 0
                        Der Martin
                        1. 0
                          Killua
                          1. 0
                            Der Martin
                            1. 0
                              Killua
                              1. 0
                                Rolf B
                                1. 0
                                  Der Martin
                                2. 0
                                  Killua
                                  1. 0
                                    Rolf B
                                    1. 0
                                      Killua
                                      1. 0
                                        Der Martin
                                        • apache
                                        • xampp
                                        1. 0
                                          Killua
                                          1. 0
                                            Der Martin
                                            1. 0
                                              Killua
            2. 0
              Killua
              1. 0
                Der Martin