Gestaltung von Vorlagen

Styling & CSS-Variablen – So gestalten Sie den Warteraum mit benutzerdefinierten CSS-Eigenschaften.

Siehe auch: Template-Markup und -Struktur | Vue-Zustand und -Methoden

Styling

CSS-Architektur

Stile sind in zwei Ebenen unterteilt:

  • Thema (_ch-theme-auto.scss) — Farben, Schriftarten, Schatten, Effekte. Leitet automatisch eine vollständige Palette aus 6 Eingabevariablen ab. Das ist es, was Sie anpassen können.
  • Basis (_ch-base.scss) — Layout, Größenanpassung, Positionierung, Animationen. Muss selten angepasst werden.

Themen-Eingabevariablen

Überschreiben Sie diese in einem Stylesheet, das nach dem Haupt-Bundle geladen wird. Das Theme leitet alle anderen Farben automatisch ab.

:root {
  --ch-brand-primary:    #424242;  /* Title, accent, stock pill */
  --ch-brand-secondary:  #4b4b4b;  /* Buttons, focus rings */
  --ch-bg:               #FFFFFF;  /* Page background */
  --ch-text:             #1C1917;  /* Main text colour */
  --ch-surface:          #F0F4F8;  /* Card / panel backgrounds */
  --ch-progress-color:   #004f84;  /* Progress bar base colour (optional) */
  --ch-border-radius:    12px;    /* Base radius — all radii scale from this */
}

Fügen Sie Ihre Überschreibungen in einem Stylesheet hinter den Hauptstilen ein:

<link rel="stylesheet" href="crowdhandler-styles.css">
<link rel="stylesheet" href="my-overrides.css">

Progressive Verbesserung

Das Thema verfolgt einen zweistufigen Ansatz:

  1. Statische Fallbacks – Vorab berechnete Hex-Werte, die in allen Browsern funktionieren.
  2. Dynamische Ableitung — In Browsern, die oklch (aus …) (Chrome 119+, Firefox 128+, Safari 16.4+), alle abgeleiteten Farben werden automatisch anhand Ihrer Eingaben berechnet.

Jede abgeleitete Variable kann weiterhin individuell überschrieben werden.

Referenz zu abgeleiteten Variablen

Alle abgeleiteten Variablen können individuell überschrieben werden. In Browsern, die oklch (aus …) Sie werden automatisch aus den oben genannten Eingaben berechnet; andernfalls werden statische Hex-Ausweichwerte verwendet.

Typografie

Variable Standard Beschreibung
--ch-font-primary Plus Jakarta Sans Schriftart für Fließtext und Überschriften
--ch-font-secondary JetBrains Mono Positionsnummer und Ziffern des Countdowns

Text

Variable Abgeleitet von Beschreibung
--ch-text-primary --ch-text Haupttext
--ch-text-secondary --ch-text 80% Zusatztext
--ch-text-muted --ch-text 70% Ausgeblendet / Hilfetext
--ch-on-bg --ch-bg Text automatisch hell oder dunkel auf dem Seitenhintergrund anzeigen
--ch-on-bg-secondary --ch-on-bg 65% Zusatztext auf dem Seitenhintergrund
--ch-on-surface --ch-Oberfläche Automatische Anpassung der Textfarbe (hell/dunkel) auf Karte/Bedienfeld
--ch-on-surface-secondary --ch-on-surface 65% Zusatztext auf der Karte/Tafel
--ch-on-surface-muted --ch-on-surface 52% Ausgeblendeter Text auf Karte/Tafel

Hintergründe

Variable Abgeleitet von Beschreibung
--ch-bg-page --ch-bg Seitenhintergrund
--ch-bg-card --ch-Oberfläche Kartenhintergrund
--ch-bg-inset --ch-Oberfläche verdunkelt Hintergrund des eingefügten Feldes
--ch-bg-input --ch-Oberfläche Hintergrund des Eingabefelds
--ch-bg-surface --ch-Oberfläche + --ch-bg 50/50 Zwischenfläche

Grenzen

Variable Abgeleitet von Beschreibung
--ch-border --ch-on-bg 12% Standardfarbe für Rahmen
--ch-border-focus --ch-brand-secondary Farbe des Fokusrings

Akzent

Variable Abgeleitet von Beschreibung
--ch-Akzent --ch-brand-primary Akzentfarbe (Überschriften, Stock-Pille)
--ch-accent-hover --ch-Akzent verdunkelt Akzent im Hover-Zustand
--ch-accent-glow --ch-brand-primary 25 % Deckkraft Akzent-Leuchteffekt
--ch-on-accent --ch-Akzent Text automatisch hell/dunkel bei Hervorhebung

Statusfarben

Variable Abgeleitet von Beschreibung
--ch-status-green Eingabe Grüner Status-Eingang (leuchtend)
--ch-status-gelb Eingabe Eingabe für Status „Gelb“ (hell)
--ch-status-red Eingabe Rote Status-Eingabe (leuchtend)
--ch-success --ch-status-green verdunkelt AA-safe-grüner Text
--ch-warning --ch-status-gelb verdunkelt AA-Safe-Text in Bernsteinfarbe
--ch-Gefahr --ch-status-red verdunkelt AA-safe roter Text
--ch-success-glow --ch-status-green 30 % Deckkraft Grünes Leuchten
--ch-warning-glow --ch-status-gelb 20 % Deckkraft Bernsteinfarbenes Leuchten
--ch-Gefahr-Leuchten --ch-status-red 20 % Deckkraft Rotes Leuchten

Schaltflächen

Variable Abgeleitet von Beschreibung
--ch-btn-bg --ch-brand-secondary Hintergrund der Hauptschaltfläche
--ch-btn-text --ch-btn-bg Text für die Schaltfläche „Hell/Dunkel“
--ch-btn-hover --ch-btn-bg verdunkelt Hover-Effekt für die Hauptschaltfläche
--ch-btn-disabled-bg --ch-btn-bg aufgehellt Hintergrund der deaktivierten Schaltfläche
--ch-btn-secondary-bg transparent Hintergrund der Sekundärtaste
--ch-btn-secondary-text --ch-text-secondary Text für die sekundäre Schaltfläche
--ch-btn-secondary-border --ch-border Rahmen der sekundären Schaltfläche
--ch-btn-secondary-hover-bg --ch-on-bg 4% Hover-Effekt bei sekundären Schaltflächen

Fortschrittsanzeige

Variable Abgeleitet von Beschreibung
--ch-progress-bg --ch-on-bg 8% Hintergrund der Strecke
--ch-progress-dark --ch-progress-color verdunkelt Dunkelstop mit Farbverlauf
--ch-progress-light --ch-progress-color aufgehellt Verlaufsblende
--ch-progress-gradient dunkle + helle Blenden Animierter Füllverlauf

Positionsnähe

Variable Abgeleitet von Beschreibung
--ch-position-far --ch-text-primary Farbe der Positionsnummer (weit)
--ch-position-mid --ch-text-secondary Farbe der Positionsnummer (Mitte)
--ch-position-near --ch-brand-primary Farbe der Positionsnummer (nahe)
--ch-position-soon --ch-success Farbe der Positionsnummer (fast fertig)

Meldungsfelder

Variable Abgeleitet von Beschreibung
--ch-message-warning-bg --ch-warning 8% Hintergrund der Warnmeldung
--ch-message-warning-border --ch-warning 20% Rahmen für Warnmeldung
--ch-message-danger-bg --ch-Gefahr 8% Hintergrund der Gefahrenmeldung
--ch-message-danger-border --ch-Gefahr 20% Rahmen für Gefahrenmeldung

Kopf- und Fußzeile

Variable Abgeleitet von Beschreibung
--ch-header-bg --ch-bg Hintergrund der Kopfzeile
--ch-on-header-bg --ch-header-bg Automatische Anpassung der Kopfzeilentextfarbe (hell/dunkel)
--ch-on-header-bg-secondary --ch-on-header-bg 65% Text der sekundären Überschrift
--ch-footer-bg --ch-bg Hintergrund der Fußzeile
--ch-on-footer-bg --ch-footer-bg Automatische Anpassung der Fußzeilentextfarbe (hell/dunkel)
--ch-on-footer-bg-secondary --ch-on-footer-bg 65% Text in der sekundären Fußzeile

Karte & Countdown

Variable Abgeleitet von Beschreibung
--ch-card-radius --ch-border-radius * 2 Eckenradius der Karte
--ch-card-shadow --ch-brand-primary getönt Kartonschatten
--ch-countdown-shadow --ch-brand-primary getönt Schatten der Countdown-Einheit

Fußzeilen-Hilfsfunktionen

Variable Abgeleitet von Beschreibung
--ch-token-bg --ch-on-bg 4% Hintergrund des Token-Ausweises
--ch-token-hover-bg --ch-on-bg 8% Hover-Effekt für Token-Badge
--ch-poll-bg --ch-on-bg 4% Ablaufzeit der Umfrage
--ch-poll-gradient Fortschritt dunkel + Farbe Poll-Timer-Füllgradient

Übersicht über wichtige CSS-Klassen

Klasse Zweck
ch-Karte Hauptkartenbehälter
ch-queue-states Wrapper für Countdown + Inhalte der aktiven Warteschlange
ch-state-message Statusmeldungscontainer (blockiert / Raum voll)
ch-state-message.ch-state-danger Blockierter Zustand (rot)
ch-state-message.ch-state-warning Raum voll (gelb)
ch-message-box Textfeld über der Karte
ch-form-section Formularbereich mit Trennlinie am oberen Rand
ch-priority-section Formular für den Prioritätscode (Hintergrund mit Einblendung)
ch-E-Mail-Abschnitt E-Mail-Formular (außerhalb der Karte)
ch-E-Mail-Übermittlung Spinner-Element beim Absenden einer E-Mail
ch-Eingabegruppe Flex-Zeile für Eingabefeld + Schaltfläche(n)
ch-Eingabe Eingabefeld für Text/E-Mail
ch-btn Hauptschaltfläche
ch-btn-sm Variante mit kleinem Knopf
ch-btn-secondary Sekundäre Schaltfläche (umrandet)
ch-btn-change Abstand zwischen den E-Mail-Schaltflächen ändern
ch-form-feedback Zeile mit Rückmeldungsmeldung
ch-form-feedback.ch-success Erfolgsrückmeldung
ch-form-feedback.ch-error Fehlermeldung
ch-stock-badge Aktienindikator
ch-Lagerbestand Artikelnummer Pille
ch-Lagerbestand-Abzeichen.ch-Lagerbestand-niedrig Lagerbestand niedrig
ch-stock-badge.ch-stock-zero Ausverkaufter Zustand
ch-progress-container Progress-Bar-Wrapper (mit Begrenzung der maximalen Breite)
ch-fortschrittsbalken Spur (Hintergrundleiste)
ch-progress-fill Füllbalken (animierter Farbverlauf)
ch-progress-bar.ch-progress-mid Leuchten in der Mitte des Fortschritts
ch-progress-bar.ch-progress-high Stärkeres Leuchten bei hohem Fortschritt
ch-progress-bar.ch-progress-almost Das pulsierende Leuchten steht kurz vor der Vollendung
ch-fortschrittsinfo Kostenvoranschlag und voraussichtliche Ankunftszeit unterhalb der Leiste
ch-spinner Lade-Spinner
ch-text-shimmer Text-Schimmer-Animation
ch-session-info Text mit Informationen zur Sitzung

Erforderliche CSS-Klassen

Ihre Vorlage muss folgende Strukturklassen enthalten:

/* Screen reader only */
.ch-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Hidden until loaded */
#crowdhandler-template {
  display: none;
  opacity: 0;
  transition: opacity 0.5s ease;
}

#crowdhandler-template.active {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 100vh;
  opacity: 1;
}

Eingangsanimationen

Elemente verwenden versetzte Einblendanimationen über ch-enter und ch-stagger-N Klassen. Jede Versatzstufe fügt eine Verzögerung von 0,1 s hinzu.

<div class="ch-logo ch-enter ch-stagger-1">...</div>
<div class="ch-header-row ch-enter ch-stagger-4">...</div>
<div class="ch-footer ch-enter ch-stagger-5">...</div>
<div class="ch-message-box ch-enter ch-stagger-6">...</div>