Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. UI Design

Wie man eine stilvolle Preistabelle mit einem klebrigen Header erstellt

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Federicco Ancie (you can also view the original English article)

Sticky-Preistabellen eignen sich perfekt für die Anzeige von Produkten und Dienstleistungen mit langen Listen vergleichbarer Funktionen. In diesem Tutorial erstellen wir eine Preistabelle mit einem klebrigen Header. Unterwegs lernen wir, wie Sie Elemente nach einem bestimmten Bildlauf fixieren und entfernen.

Es gibt eine Reihe von JavaScript-Plugins, die diese Art von Funktionalität bieten, wie ScrollMagic.js. Tatsächlich habe ich bereits ein Tutorial veröffentlicht, das zeigt, wie Sie mit diesem Plugin einen ähnlichen Effekt implementieren können.

Fordern wir uns heute jedoch selbst heraus und schreiben unseren eigenen Code.

Die Preistabelle, die wir erstellen

Für diese praktische Übung erstellen wir eine Preisseite, auf der die verschiedenen Abonnementpläne in den Spalten einer Preistabelle aufgeführt sind. Wenn wir nach unten scrollen, wird der Header klebrig, um im Blick zu bleiben, und wird zu einem späteren Zeitpunkt freigegeben. Die Preistabelle mit Sticky-Header-Kombination ist ein beliebtes UI-Muster, das Sie möglicherweise auf Websites wie monday.com gesehen haben.

Beachten Sie, dass die klebrige Funktionalität unserer Demo-Trigger in Ansichtsfenstern mit einer Größe von mehr als 779 Pixel angezeigt wird. Möglicherweise müssen Sie sich die Vollbild-Demo ansehen, um sie vollständig zu schätzen!

Wann sollten Sie eine Preistabelle verwenden?

Preistabellen kommen zur Geltung, wenn eine Sammlung von Produkten, Dienstleistungen oder Varianten dem Verbraucher zu viel Auswahl bietet. Wenn der Verbraucher Schwierigkeiten hat, sich für eine Option zu entscheiden, entscheidet er sich eher für nichts. Informationsüberflutung = Konvertierungsfehler.

Zeitverschwendung beim Treffen von Entscheidungen macht jeden Vorteil zunichte, wenn man überhaupt die Wahl hat!

"Untersuchungen [..] zeigen, dass ein Übermaß an Auswahlmöglichkeiten oft dazu führt, dass wir weniger und nicht mehr zufrieden sind, wenn wir uns tatsächlich entscheiden." -

Alina Tugend, NYT

Die Rolle einer Preistabelle besteht darin, dem Benutzer zu helfen, die ihm zur Verfügung stehenden Optionen visuell zu interpretieren, und ihn manchmal sogar zu ermutigen, sich auf die attraktivste Wahl zu konzentrieren.

Weitere Informationen finden Sie in Val Geislers Anleitung zum Entwerfen einer Preisseite, die im InVision-Blog konvertiert wird.

Pricing Table Plugins für WordPress

Bevor Sie in das Tutorial eintauchen, sollten Sie sich die Plugins für Preistabellen ansehen, die für WordPress auf Envato Market verfügbar sind.

ARPrice - WordPress Pricing Table Plugin
Eines der vielen Beispiele aus ARPrice - WordPress Pricing Table Plugin

Nachdem dies gesagt ist, helfen wir unseren Benutzern jetzt, indem wir eine super klare Tabelle erstellen, aus der sie auswählen können!

1. Beginnen Sie mit dem Seiten-Markup

Wir beginnen mit drei Abschnitten:

Der erste und dritte Abschnitt spielen keine wichtige Rolle. Sie enthalten Dummy-Inhalte und -Stile, um sicherzustellen, dass die Seite lang genug ist, um den gewünschten Bildlaufeffekt auszulösen.

Im zweiten Abschnitt platzieren wir die Tabelle. Wir werden es in einen Container einwickeln, damit es sich auf kleinen Bildschirmen reaktionsschnell verhält:

Die Tabelle selbst enthält vier Spalten und repräsentiert die Preispläne für ein Produkt oder eine Dienstleistung. In unserem Fall haben wir drei Abonnements: Starter, Essential und Professional.

Tabellenüberschriften

Der klebrige Header der Tabelle identifiziert diese Pläne eindeutig. Jeder Plan enthält auch eine Handlungsaufforderungstaste.

The table headers

Hier ist das Markup für die Tabellenüberschriften:

Tabellenzeilen

Jede Tabellenzeile beschreibt die Verfügbarkeit eines Features in allen Plänen. Wenn ein Plan diese Funktion enthält, wird ein SVG-Häkchensymbol angezeigt. Andernfalls wird ein graues Kreuz angezeigt.

The table rows

Hier ist das Markup für eine Funktion, die von allen Plänen unterstützt wird:

Und hier ist das Markup für eine Funktion, die nur im "Professional" -Plan verfügbar ist:

2. Definieren Sie einige grundlegende Stile

Wenn das Markup fertig ist, werden wir mit dem CSS fortfahren. Unser erster Schritt besteht darin, einige CSS-Variablen und allgemeine Rücksetzstile einzurichten.

Für jeden Plan definieren wir die entsprechende Variable. Dadurch können wir das Erscheinungsbild bei Bedarf leicht ändern.

Hier sind die Reset-Stile:

Hinweis: Der Einfachheit halber werde ich nicht alle CSS-Regeln im Lernprogramm durchgehen. Hier gibt es fast 290 CSS-Zeilen. Ich werde nur die wichtigsten diskutieren. Stellen Sie sicher, dass Sie alle überprüfen, indem Sie auf die Registerkarte CSS des Demo-Projekts klicken.

3. Gestalten Sie die Preistabelle

Die Preistabelle hat eine maximale Breite und wird horizontal auf der Seite zentriert:

Die Zeilen verhalten sich wie Flex-Container:

Alle Zellen haben die gleiche Breite:

Um die Pläne zu trennen und eine klare Sicht darauf zu erhalten, welche Zelle zu jedem Plan gehört, fügen wir den Zielelementen einen hellgrauen Rand hinzu:

Die Preistabelle reaktionsschnell machen

Wie wir im nächsten Abschnitt sehen werden, wird der Sticky-Effekt in Ansichtsfenstern mit mehr als 779 Pixel ausgelöst (Sie können diesen Wert entsprechend ändern). In kleineren Ansichtsfenstern wird eine typische Tabelle angezeigt, die horizontal gescrollt werden kann.

The table with scrollbar on small screens

Bootstrap verwendet ähnliche Funktionen auch für responsive Tabellen. Es gibt andere (bessere?) Ansätze für den Umgang mit reaktionsschnellen Tabellen, aber diese Methode macht hier sicherlich den Job.

4. Stecken Sie den Tabellenkopf fest / entfernen Sie ihn

Mit HTML und CSS konzentrieren wir uns jetzt auf den Bildlaufeffekt mit JavaScript. Dadurch können wir unseren Header klebrig machen.

Variablen

Für unseren ersten Schritt holen wir uns eine Kopie der gewünschten Elemente. Wir speichern die beiden Klassen, die wir später verwenden werden, in Variablen:

Der nächste Schritt besteht darin, einige Berechnungen durchzuführen. Insbesondere möchten wir die folgenden Dinge berechnen:

  • Die Tischbreite.
  • Die oberste Position der Tabelle relativ zum Ansichtsfenster.
  • Die Höhe des thead. Dies ist das Element, das fixiert / nicht fixiert wird.

Hier ist das erforderliche JavaScript, um dies zu tun:

Beachten Sie, dass wir die oben genannten Werte in let-Variablen speichern. Wir haben das absichtlich gemacht. Wenn die Größe der Seite geändert wird, sollten wir das oben beschriebene Material neu berechnen und diesen Variablen diese neuen Werte neu zuweisen.

Beim Scrollen

Jedes Mal, wenn wir nach oben oder unten scrollen, wird die Funktion scrollHandler ausgeführt:

Innerhalb dieser Funktion führen wir die folgenden Aktionen aus, die nur ausgeführt werden, wenn die Fensterbreite mindestens 780 Pixel beträgt:

  1. Rufen Sie die Anzahl der Pixel ab, die ein Benutzer vom oberen Rand des Ansichtsfensters gescrollt hat.
  2. Holen Sie sich die oberste Position des letzten Abschnitts relativ zum Ansichtsfenster.
  3. Überprüfen Sie, ob ein Benutzer mehr als oder gleich der anfänglichen oberen Position der Tabelle gescrollt hat.
  4. In diesem Fall setzen wir die Breite des thead gleich der Anfangsbreite der Tabelle.
  5. Dann prüfen wir, ob der resultierende Wert von Schritt 2 größer als die Höhe des thead ist.
  6. In diesem Fall fixieren wir das thead-Element, indem wir die sticky-table-Klasse zum body hinzufügen und die sticky-table2-Klasse aus demselben Element entfernen. An diesem Punkt wird der thead zu einem fest positionierten Element. Wir positionieren es dann oben im Ansichtsfenster. Wir geben dem body auch eine obere Polsterung, die der Höhe des thead entspricht.
  7. Wenn dies nicht der Fall ist, hören wir auf, den thead zu fixieren, indem wir die Klasse sticky-table2 zum body hinzufügen und die Klasse sticky-table aus demselben Element entfernen. An diesem Punkt wird der thead freigegeben und wird zu einem absolut positionierten Element. Wir positionieren es dann am Ende der Tabelle.
  8. Falls ein Benutzer weniger als die ursprüngliche obere Position der Tabelle gescrollt hat (der thead wurde noch nicht fixiert), entfernen wir die Klassen sticky-table und stick-table2 aus dem body. Außerdem setzen wir die obere Polsterung auf 0. Zu diesem Zeitpunkt hat der thead keine Position (statisches Element), daher setzen wir seine standardmäßige top Position zurück. Schließlich setzen wir seine Breite auf 100% (wir können es überspringen).

Der Code, der all dieses Verhalten implementiert, lautet wie folgt:

Und die zugehörigen Stile für jede Klasse:

5. Ändern der Größe der Seite

Wir haben den Job fast erledigt, Leute! Bisher funktioniert der Sticky-Header-Effekt beim Laden der Seite einwandfrei. Aber was passiert, wenn die Größe der Seite geändert wird? Nun, es wäre wirklich schön, wenn wir diese Demo auch für die Größenänderung verwenden könnten, oder? Machen wir das!

Jedes Mal, wenn wir die Größe der Seite ändern, wird die Funktion resizeHandler ausgeführt.

Innerhalb dieser Funktion überprüfen wir zuerst die Fensterbreite, aktualisieren dann entweder die Werte der oben genannten let-Variablen oder setzen die Inline-Stile für thead und body zurück. Beachten Sie, dass wir die oberste Position des Tisches abrufen, indem wir die Höhe des ersten Abschnitts ermitteln. Sie fragen sich vielleicht, warum wir die offsetTop-Eigenschaft der Tabelle nicht verwendet haben? Während meiner Tests ist mir aufgefallen, dass beim Ändern der Größe nicht immer genaue Ergebnisse erzielt werden. Außerdem funktioniert die Methode getBoundingClientRect() nicht, da sie auch falsche (sogar negative) Werte liefert.

Der erforderliche JavaScript-Code:

Abschluss

Das war's Leute! In diesem Tutorial ist es uns gelungen, einen nützlichen Bildlaufeffekt zu erstellen, ohne eine externe Bibliothek zu verwenden. Wir haben nicht nur gelernt, wie man klebrige Elemente erstellt, sondern auch, wie man sie nach einer gewissen Zeit des Scrollens löst (freigibt).

All dies zusammen hat uns eine wirklich nützliche Preistabelle mit einem klebrigen Header gegeben.

Ich hoffe, dass diese Übung Ihnen geholfen hat, etwas Neues zu lernen, und Sie dazu inspiriert hat, es in einem bevorstehenden Projekt zu verwenden.

Vor dem Schließen möchte ich zwei Dinge hervorheben:

  • Ich habe das table-Element verwendet, um diesen Effekt zu erstellen. Dies ist möglicherweise nicht immer die ideale Methode, wenn man bedenkt, dass es heute flexiblere und leistungsfähigere Layoutlösungen wie CSS Grid gibt. Eine Tabelle ist jedoch oft das beste Element für die Anzeige von Daten, daher habe ich mich bei dieser Gelegenheit dafür entschieden.
  • Es ist immer eine große Herausforderung, tabellarische Daten auf Mobilgeräten darzustellen. Bei dieser Gelegenheit habe ich mich für eine einfache Bildlauflösung entschieden. Ein anderer Ansatz könnte darin bestehen, die Tabellenmethode für eine Karusselllösung mit drei Folien, bei denen jede Folie einen Preisplan darstellt, vollständig zu verwerfen (nur > 779px). Vielleicht haben Sie eine bessere Idee, die wir in den Kommentaren unten diskutieren könnten.

Wie immer vielen Dank fürs Lesen!

Weitere Sticky Tutorials

Wir haben einige Tutorials, die verschiedene Ansätze zum Kleben von Elementen beim Scrollen einer Webseite untersuchen:

Weitere Informationen zu Preistabellen

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.