Zum Hauptinhalt springen

Gestaltung

Button, Hinweis-Fenster, Fortschrittsbalken und Statusmeldung liegen in einem abgeschirmten Bereich (Shadow DOM), den das CSS Ihrer Website nicht erreicht. Sie gestalten sie mit Akzentfarbe, CSS-Variablen und ::part(). Die Übersetzung steht in Ihren eigenen Elementen, dort wirkt Ihr CSS weiter.

Akzentfarbe​

<script src="https://leichtesprache.participaite.de/plugin/leichte-sprache.js" data-site="IHRE-KENNUNG" data-accent="#00507d" defer></script>

Die Farbe gilt für Rahmen und Schrift des Buttons, seinen Hintergrund im eingeschalteten Zustand, den Fortschrittsbalken, den Button „Verstanden“ und die Linie am Banner-Hinweis. Auf dem eingeschalteten Button und auf „Verstanden“ steht weiße Schrift, wählen Sie also eine Farbe mit mindestens 4,5 : 1 Kontrast zu Weiß. Bei einer hellen Akzentfarbe setzen Sie --ls-accent-contrast auf eine dunkle Schriftfarbe. Sitzt der Button in einem Element Ihrer Seite (data-button), bestimmt Ihr CSS seine Farben. Die Akzentfarbe gilt dann für Hinweis-Fenster und Fortschrittsbalken und steht am Button als Variable --ls-accent bereit.

Button im eigenen Kopfbereich​

Mit data-button kommt der Button in ein Element Ihrer Seite, etwa in die Service-Leiste:

<ul class="service-leiste">
<li><a href="/suche">Suche</a></li>
<li id="ls-button"></li>
</ul>
<!-- … -->
<script src="https://leichtesprache.participaite.de/plugin/leichte-sprache.js" data-site="IHRE-KENNUNG" data-button="#ls-button" defer></script>

Das Plugin setzt dort einen einfachen Button ohne Symbol ein:

<button type="button" class="ls-plugin-ui ls-toggle" aria-busy="false">Leichte Sprache</button>
ZustandBeschriftungAttribute
Original„Leichte Sprache“keine
Übersetzung läuft„Übersetze …“data-ls-on, aria-busy="true"
Leichte Sprache an„Original-Text“data-ls-on

Der Button hat kein aria-pressed, weil seine Beschriftung sagt, was ein Klick tut (Barrierefreiheit). Bis Version 0.4 zeigte aria-pressed="true" den Zustand. Verwendet Ihr CSS diesen Selektor, ändern Sie ihn in [data-ls-on].

Seine Grundstile haben keine Spezifität (:where()), jede Ihrer Regeln mit Element-, Klassen- oder ID-Selektor geht vor:

.service-leiste .ls-toggle {
font: inherit;
padding: 0.5em 1em;
border: 2px solid currentColor;
border-radius: 4px;
background: #fff;
color: #00507d;
cursor: pointer;
}
.service-leiste .ls-toggle[data-ls-on] { background: #00507d; color: #fff; }
.service-leiste .ls-toggle[aria-busy="true"] { cursor: progress; }
.service-leiste .ls-toggle:focus-visible { outline: 3px solid #00507d; outline-offset: 2px; }

Hinweis-Fenster, Fortschrittsbalken und Statusmeldung bleiben im abgeschirmten Bereich. Einen ganz eigenen Button mit eigenem Symbol bauen Sie mit data-placement="none" und der JavaScript-API.

Schwebender Button, Hinweis-Fenster, Fortschrittsbalken​

Diese Elemente liegen in <leichte-sprache-ui>. CSS-Variablen setzen Sie an diesem Element oder weiter oben, etwa an :root:

leichte-sprache-ui {
--ls-radius: 6px;
--ls-font-size: 18px;
--ls-shadow: none;
}
VariableStandardWirkung
--ls-accent#1a1a1aAkzentfarbe (wie data-accent)
--ls-accent-contrast#fffSchrift auf der Akzentfarbe
--ls-bg#fffHintergrund von Button und Hinweis-Fenster
--ls-fg#1a1a1aSchriftfarbe im Hinweis-Fenster
--ls-hover-bg#f2f2f2Hintergrund des Buttons unter dem Mauszeiger
--ls-focusAkzentfarbeFarbe des Fokusrahmens
--ls-fontSchrift Ihrer SeiteSchriftart (ohne Angabe die des body)
--ls-font-size16px (auf schmalen Bildschirmen 15px)Schriftgröße des Buttons
--ls-radius999px (Pillenform)Eckenradius von Button und „Verstanden“-Button
--ls-radius-popup12pxEckenradius des Hinweis-Fensters
--ls-shadowleichter SchattenSchatten des Buttons
--ls-offset-x, --ls-offset-y16pxAbstand des schwebenden Buttons zum Fensterrand (wie data-offset)
--ls-z2147483000Stapelhöhe (wie data-z-index)

Werte aus data-accent, data-offset und data-z-index stehen direkt am Element und gehen CSS-Variablen mit demselben Zweck vor. Einzelne Teile erreichen Sie mit ::part():

TeilElement
toggleder Button (schwebend oder über dem Inhalt)
popupdas Hinweis-Fenster
popup-textder Text im Hinweis-Fenster
popup-okder Button „Verstanden“
progressder Fortschrittsbalken am oberen Fensterrand
leichte-sprache-ui::part(toggle) { font-weight: 600; }
leichte-sprache-ui::part(popup) { border-radius: 4px; }
leichte-sprache-ui::part(progress) { height: 6px; }

Übersetzte Inhalte​

Das Plugin ändert nie das class-Attribut Ihrer Elemente. Regeln wie p:not([class]) und Klassen, auf die Ihre Skripte reagieren, wirken also weiter. Den Zustand zeigen eigene Attribute:

HakenBedeutung
[data-ls-state="translated"]Element, das gerade eine Übersetzung zeigt, zum Beispiel eine Überschrift, ein Absatz, eine Liste oder ein Listeneintrag
span.ls-runHülle um Text, der direkt in einem Container neben anderen Blöcken steht. Sie trägt ebenfalls data-ls-state="translated" und verschwindet beim Zurückschalten.
li[data-ls-lead]Einleitungszeile einer Liste, die mit Doppelpunkt endet (zum Beispiel „Sie brauchen:“), ohne Aufzählungszeichen
[data-ls-wait]Abschnitt, der auf seine Übersetzung wartet. Werte 0 bis 5: pulsiert (als Welle, höchstens 12 Abschnitte im sichtbaren Bereich), still: nur abgeblendet.
[data-ls-fresh]Abschnitt, dessen Übersetzung gerade angekommen ist (kurzes Einblenden)
[aria-busy="true"]am Inhaltsbereich, solange Übersetzungen laufen
.ls-noticeder Hinweis als Banner (data-notice-style="banner"), ein <p role="note"> über dem Inhalt

Im Markup ändert sich Folgendes:

  • In Absätzen trennt <br> die Sätze, jeder steht in einer eigenen Zeile im selben <p> wie vorher.
  • Bei Überschriften wechselt nur der Text. Schreibt das Modell eine Überschrift in mehreren kurzen Zeilen, bleiben die Zeilenumbrüche.
  • Kurze Aufzählungen baut das Plugin aus den übersetzten Zeilen neu auf. Jeder Eintrag ist eine Kopie des ersten Originaleintrags, mit dessen Klassen, aber ohne id. Nummerierte Listen, Linklisten und Listen mit langen Einträgen übersetzt es Eintrag für Eintrag.
  • Links, deren Text in der Übersetzung fehlt, stehen in einer letzten Zeile „Mehr Infos: …“, in Listen als eigener Eintrag.

Mehr Zeilenabstand für Fließtext​

Leichte Sprache liest sich mit mehr Zeilenabstand besser. Vergrößern Sie ihn nur für übersetzten Fließtext, nicht für Überschriften, Buttons oder Teaser-Titel:

:is(p, li, ul, ol, dd, figcaption, blockquote, .ls-run)[data-ls-state="translated"] {
line-height: 1.75;
}

Aufzählungszeichen aus ::before​

Erzeugt Ihr CSS die Aufzählungszeichen mit ::before, blenden Sie sie für die Einleitungszeile aus:

li[data-ls-lead]::before { display: none; }
li[data-ls-lead] { margin-left: 0; padding-left: 0; }

Längere Texte​

Leichte Sprache erklärt Wörter und setzt jeden Satz in eine eigene Zeile, die Texte werden also oft länger. Kästen mit fester Höhe oder line-clamp können überlaufen. Lassen Sie solche Elemente für [data-ls-state="translated"] mitwachsen. Beim Einschalten, bei neuen Übersetzungen und beim Zurückschalten löst das Plugin höchstens alle zwei Sekunden das Ereignis resize am Fenster aus, damit Skripte für gleich hohe Kacheln, Akkordeons oder Slider neu messen.

Mediopunkt​

Das Modell trennt lange Wörter mit dem Mediopunkt ‧ (U+2027), zum Beispiel „Bürger‧amt“. Fehlt das Zeichen in Ihrer Webschrift, nimmt der Browser es aus einer Ersatzschrift, und es kann etwas anders aussehen.