Heim Web-Frontend CSS-Tutorial Übergänge außerhalb des Ansichtsfensters anzeigen

Übergänge außerhalb des Ansichtsfensters anzeigen

Nov 19, 2024 am 07:28 AM

View Transitions outside the Viewport

CSS-Ansichtsübergänge sind in Chrome gelandet und stehen nun (im Guten wie im Schlechten) den meisten Endbenutzern allgemein zur Verfügung. Safari ist nicht weit dahinter, die Funktion ist in TP verfügbar und Firefox arbeitet zumindest daran.

Ich finde es toll, wie viel einfacher die Implementierung von mehrseitigen Übergängen geworden ist, aber gleichzeitig habe ich ein großes Problem mit ihnen festgestellt: Elemente, die sich außerhalb des Ansichtsfensters befinden, beginnen wild herumzuschwirren.

Mein Blog befasst sich mit etwas Javascript. Ein IntersectionObserver legt den view-transition-name in einer benutzerdefinierten Eigenschaft fest, während er sichtbar ist. Solange es außer Sichtweite ist, ist die Eigenschaft deaktiviert und der Übergang wird nicht ausgelöst. Es funktioniert, aber HTML, Javascript und CSS müssen voneinander abhängig sein. Im Sinne einer CSS-Anpassung der Präsentationsaspekte würde ich mir eine einfachere Lösung wünschen.

Eine weitere Funktion, die möglicherweise hilfreich sein könnte, ist kürzlich in Chrome gelandet: Scroll-gesteuerte Animationen. Leider ist dies bisher nur in Chrome verfügbar. Firefox hat es hinter einer Flagge und Safari zeigt hier keine Anzeichen von Aktivität. Wir können jedoch problemlos auf die zuvor erwähnte Javascript-Lösung zurückgreifen oder die Ansichtsfenstererkennung einfach ignorieren und die Animation trotzdem anzeigen (dies wäre zum Zeitpunkt des Schreibens in Safari der Fall).

Ein einfacher Übergang

Lassen Sie uns alles zusammenfassen, beginnend mit dem Ansichtsübergang selbst:

@media (prefers-reduced-motion: no-preference) {
    @view-transition {
        navigation: auto;
    }

    [data-view-transition] {
        view-transition-name: var(--view-transition-name, default-view-transition);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
<!-- on page1.html: -->
<div data-view-transition>Whoosh!</div>

<!-- on page2.html: -->
<div data-view-transition>Whoosh!</div>
Nach dem Login kopieren

Jetzt sehen Sie, wie sich das Div von Seite1.html beim Navigieren in seine Version auf Seite2.html verwandelt. Die @view-transition at-Regel in CSS initiiert ebenfalls eine Überblendung im gesamten Dokument. Die Übergangsdauer ist standardmäßig auf 0,4 Sekunden eingestellt, aber wir können ein paar Zeilen hinzufügen, um dies zu steuern:

@property --view-transition-duration {
    syntax: "<time>";
    inherits: true;
    initial-value: 0.4s;
}

::view-transition-group(*) {
    animation-duration: var(--view-transition-duration);
}
Nach dem Login kopieren

Die Dauer wird durch --view-transition-duration festgelegt. Die @property-Regel oben ist völlig optional, lässt die Animationsdauer jedoch auf 0,4 Sekunden zurückfallen, statt auf einen ungültigen Wert, wenn wir --view- festlegen. Übergangsdauer: falsch.

Umgang mit dem Ansichtsfenster

Wenn sich ein Element zum Zeitpunkt eines Seitenübergangs jedoch außerhalb des Ansichtsfensters befindet, wird es dennoch animiert und manchmal in oder über den gesamten sichtbaren Bildschirm verschoben, ohne anzugeben, woher es kommt oder wohin es geht. Ich finde dieses Verhalten sehr irritierend.

Mit scrollgesteuerten Animationen verfügen wir jetzt über ein Tool, das Stile basierend auf einem Scroll und einer relativen Position zum Ansichtsfenster steuern kann. So können wir auch den Auslöser für Ansichtsübergänge steuern:

@media (prefers-reduced-motion: no-preference) {
    @view-transition {
        navigation: auto;
    }

    [data-view-transition] {
        view-transition-name: var(--view-transition-name, default-view-transition);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

Die Keyframe-Animation „enable-vt“ kann nicht reibungslos von „Keine“ zu einer benutzerdefinierten Eigenschaft mit einer Textzeichenfolge übergehen, sodass ein harter Schnitt erforderlich ist. Der Animationsbereich wird ausgelöst, wenn das Element das Ansichtsfenster auch nur teilweise betritt oder verlässt. Die Animation selbst setzt --enable-view-transition auf 0,1 % und 99,9 %, um so schnell wie möglich ausgelöst zu werden. Ich möchte Ansichtsübergänge aktivieren, sobald wir einen Hinweis darauf erhalten, wo die Animation begonnen oder geendet hat.

Schließlich wird --enable-view-transitions durch die scrollgesteuerte Animation entweder auf „none“ oder eine neue benutzerdefinierte Eigenschaft namens „--view-transition-name“ gesetzt. Der Wert liegt zwischen 0,1 % und 99,9 % der Bildschirmabdeckung und deaktiviert Ansichtsübergänge sowohl oberhalb als auch unterhalb des Ansichtsfensters (oder links und rechts, je nachdem, wie Sie es halten möchten). Diese neue Eigenschaft ist nützlich, um individuelle Animationen für verschiedene Elemente festzulegen. Jedes Element kann seinen eigenen Übergang erhalten, indem ein eindeutiger Wert für --view-transition-name.
festgelegt wird

<div data-view-transition>



<p>Dies muss sowohl auf der Quell- als auch auf der Zielseite erfolgen. Wenn kein Wert festgelegt ist, wird standardmäßig der Standardansichtsübergang verwendet, der alle verbleibenden Datenansichtsübergangselemente einheitlich steuert.</p>

<h2>
  
  
  Reale Umsetzung
</h2>

<p>Ich habe diese Implementierung zu meinem kleinen CSS-Boilerplate, Ssstyles, hinzugefügt. Wenn Sie einem Element auf der Quell- und Zielseite das Attribut „data-view-transition“ zuweisen, kann es zwischen beiden Seiten wechseln. Wenn Sie ihm den Namen „--view-transition-name“ geben, verfügt er über eine eigene, einzigartige Animation, unabhängig von anderen ähnlichen Elementen. Durch Festlegen von --view-transition-duration wird die Dauer des Übergangs gesteuert.</p>


          

            
        
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonÜbergänge außerhalb des Ansichtsfensters anzeigen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit GraphQL Caching Arbeiten mit GraphQL Caching Mar 19, 2025 am 09:36 AM

Wenn Sie kürzlich mit GraphQL gearbeitet oder seine Vor- und Nachteile überprüft haben, haben Sie zweifellos Dinge wie "GraphQL nicht unterstützen Caching" oder gehört

Aufbau einer Ethereum -App mit Redwood.js und Fauna Aufbau einer Ethereum -App mit Redwood.js und Fauna Mar 28, 2025 am 09:18 AM

Mit dem jüngsten Aufstieg von Bitcoins Preis über 20.000 USD und kürzlich von 30.000, dachte ich, es lohnt

Erstellen Sie Ihr eigenes Bragdoc mit ELEITY Erstellen Sie Ihr eigenes Bragdoc mit ELEITY Mar 18, 2025 am 11:23 AM

Unabhängig davon, in welcher Phase Sie als Entwickler Sie befinden, haben die Aufgaben, die wir erledigen - ob groß oder klein - einen enormen Einfluss auf unser persönliches und berufliches Wachstum.

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Es ist aus! Herzlichen Glückwunsch an das Vue -Team, dass es eine massive Anstrengung war und lange kommt. Alle neuen Dokumente auch.

Können Sie gültige CSS -Eigenschaftswerte aus dem Browser erhalten? Können Sie gültige CSS -Eigenschaftswerte aus dem Browser erhalten? Apr 02, 2025 pm 06:17 PM

Ich ließ jemanden mit dieser sehr legitimen Frage einschreiben. Lea hat gerade darüber gebloggt, wie Sie gültige CSS -Eigenschaften selbst aus dem Browser erhalten können. Das ist so.

Ein bisschen auf CI/CD Ein bisschen auf CI/CD Apr 02, 2025 pm 06:21 PM

Ich sage "Website" passt besser als "Mobile App", aber ich mag dieses Rahmen von Max Lynch:

Gestapelte Karten mit klebriger Positionierung und einem Schuss Sass Gestapelte Karten mit klebriger Positionierung und einem Schuss Sass Apr 03, 2025 am 10:30 AM

Neulich habe ich dieses besonders schöne Stück von der Website von Corey Ginnivan entdeckt, auf der eine Sammlung von Karten aufeinander stapelt.

Vergleich von Browsern für reaktionsschnelles Design Vergleich von Browsern für reaktionsschnelles Design Apr 02, 2025 pm 06:25 PM

Es gibt eine Reihe dieser Desktop -Apps, in denen das Ziel Ihre Website gleichzeitig in verschiedenen Dimensionen angezeigt wird. So können Sie zum Beispiel schreiben

See all articles