Kategorie: Webdesign

Webdesign, wie es wirklich ist. Erfahrungen und Einblicke aus dem Berufsalltag – WordPress, Bootstrap, Front-End. Aus der Praxis, nicht aus dem Lehrbuch.


Ausschnitt aus dem WordPress-Adminbereich: der «Nachrichten-Eingang» des Plugins Flamingo auf hellem Grund, an den Rändern unscharf. Ausgewählt ist die Ansicht «Spam (1)», daneben steht «Papierkorb (40)». Der einzige Eintrag der Liste ist die Testnachricht von «viagra-test-123 » aus dem Kanal «Contact Form 7». In der Bildmitte, unter dem Eintrag, steht ein weinrotes, halbtransparent gefülltes Schild.

Spam trotz Akismet – Contact Form 7 anbinden

Es kam immer mehr Spam über mein Kontaktformular – trotz installiertem und aktivem Akismet. Der Grund: Contact Form 7 leitet Nachrichten nur dann an Akismet weiter, wenn die Felder im Formular die passenden Akismet-Optionen tragen. Ohne sie ist das Formular ungeschützt, auch wenn Akismet aktiv ist.

Weiterlesen: Spam trotz Akismet – Contact Form 7 anbinden
JavaScript-Code in einem dunklen Editor, unten scharf, nach oben zunehmend unscharf. Im Fokus steht der Listener für das Ereignis hidden.bs.modal: Er holt den gemerkten Auslöser mit modalTriggers.get( modalElement ), prüft mit document.contains( trigger ), ob er noch im Dokument steht, setzt mit trigger.focus() den Fokus zurück und löscht danach den Eintrag mit modalTriggers.delete( modalElement ). Darüber, unscharf, der Listener für hide.bs.modal mit document.activeElement.blur().

Wieder da, wo man war – Fokus bei Bootstrap-Modals

Nach dem Schliessen eines Bootstrap-Modals soll der Fokus wieder dort landen, wo er vorher war – beim Element (meist ein Button), das den Modal geöffnet hat. Das betrifft die Bedienung mit Tastatur, Screenreader und Maus. Ein kleines JavaScript löst das zentral für alle Modals einer Seite, auch dort, wo Bootstrap den auslösenden Button nicht selbst kennt.

Weiterlesen: Wieder da, wo man war – Fokus bei Bootstrap-Modals
Sechs stilisierte Cards auf grauem Grund, angeordnet in einem Raster aus zwei Reihen zu je drei. Jede Card hat einen weinroten Kopfbereich mit einer grossen weissen Zahl, darunter angedeutete Textzeilen als dunkle und graue Balken sowie einen weinroten Button. Die Zahlen stehen in gemischter Reihenfolge: oben 3, 1 und 5, unten 2, 4 und 6.

Jedes Mal anders – HTML-Cards zufällig anordnen

Wenn HTML-Cards bei jedem Seitenaufruf in einer anderen Reihenfolge erscheinen sollen, lässt sich das mit ein wenig JavaScript und CSS lösen – ganz ohne Eingriff ins Backend. Die Cards sind zunächst unsichtbar und ihr Platz auf der Seite ist von Anfang an reserviert, damit sich der Inhalt darunter nicht verschiebt. Sind sie gemischt, erscheinen sie.

Weiterlesen: Jedes Mal anders – HTML-Cards zufällig anordnen
Weinroter Hintergrund mit einem gleichmässigen Muster aus blassen Verbotszeichen, also Kreisen mit diagonalem Strich. In der Mitte ist das Muster ausgespart: Dort steht ein weisses Verbotszeichen, auf das von rechts oben eine weiss umrandete Sprechblase zeigt. In der Sprechblase stehen zwei helle Balken als angedeutete Textzeilen, wie bei einem Tooltip.

Deaktiviert und trotzdem erklärend – A11Y-konforme Tooltips

Ein deaktivierter Button reagiert weder auf Maus noch Tastatur und einen Tooltip zeigt er dadurch auch nicht. Gerade dann wäre aber eine Erklärung hilfreich, denn ein Symbol, ein Icon, der Text oder eine Funktion sind oft nicht selbsterklärend für den jetzigen Status. Ein umschliessendes Element und ein paar ARIA-Attribute schaffen Abhilfe – auch für Screenreader.

Weiterlesen: Deaktiviert und trotzdem erklärend – A11Y-konforme Tooltips
Zwei stilisierte lange Tabellen nebeneinander, getrennt durch ein nach rechts weisendes Winkelzeichen. Ein heller Kasten zeigt jeweils den sichtbaren Bereich, die Zeilen darüber und darunter sind ausgegraut. Links ist der dunkle Tabellenkopf oberhalb des Kastens aus dem sichtbaren Bereich gescrollt; rechts ist der Tabellenkopf weinrot eingefärbt am oberen Rand des Kastens angedockt, während die Zeilen darunter weiterlaufen.

Stehen bleiben, bitte – Sticky Header bei langen Tabellen

Bei langen Tabellen verliert man schnell die Übersicht, wenn der Tabellenkopf aus dem Sichtfeld scrollt. Wenn man den Tabellenkopf mit CSS festhält, während die Zeilen darunter durchlaufen, behält man die Übersicht. Und das ist weniger aufwendig, als man denkt.

Weiterlesen: Stehen bleiben, bitte – Sticky Header bei langen Tabellen
SCSS-Code in einem dunklen Editor, in der Bildmitte scharf, oben und unten unscharf. Im Fokus steht der Selektor .widget_social_links mit mehreren @extend-Anweisungen auf Bootstrap-Utilities wie .d-flex, .gap-3, .gap-md-4 und .justify-content-sm-end, darunter ein verschachteltes .menu-item mit @extend .d-flex und @include icon(2rem, 100%).

@extend mit Bootstrap – gemessen statt geglaubt

Bootstrap-Klassen per @extend zu übernehmen ist sehr praktisch. Bläht sich die CSS-Datei aber unkomprimiert auf 27 MB auf, ist das nicht OK. Man könnte folgern, dass sich @extend und Bootstrap nicht vertragen. Das hält einer Messung nicht stand: Teuer wird es nur bei wenigen, klar benennbaren Mustern.

Weiterlesen: @extend mit Bootstrap – gemessen statt geglaubt