Die gepflegte Liste der Tippziele wird jetzt bewacht

In module.css steht ein Block, der ein Dutzend Klassen auf 44 Pixel
hebt. Diese Liste wurde von Hand gepflegt -- genau die Falle, vor der
die Hausregeln warnen: Wer einen Knopf mit `width: 34px` baut, traegt
ihn dort nicht nach und merkt es nicht.

GEMESSEN: FUENF Bedienelemente standen nicht drin.
  .nachricht__weg       24 breit   (das x an einer Nachricht)
  .antwort-leiste__weg  28 breit
  .chat__weg            34 breit   <- der unangenehmste
  .todo__weg            36 breit
  .sicht__weg           28 breit

`.chat__weg` ist der Knopf, der ein Gespraech wegraeumt -- und direkt
daneben sitzt der, der es FUER ALLE aufloest. Zwei 34-Pixel-Ziele
nebeneinander, eines davon unwiderruflich.

Neu: server/pruef-tippziele.mjs -- 11/0, ohne Browser, unter einer
Sekunde. Sie leitet die Bedienelemente aus dem CSS ab und verlangt
fuer jedes eine Abdeckung. Die Liste bleibt (CSS kann nicht rechnen),
aber sie kann nicht mehr still veralten.

DER ERSTE ANLAUF WAR ZU GROB und meldete 21 Treffer, davon 15 falsch:
`.chat__weg svg` ist 17 Pixel gross und soll das auch sein --
getroffen wird der Knopf darum herum. Eine Pruefung, die zu viel
meldet, wird abgeschaltet; das ist kein besseres Ergebnis als eine,
die zu wenig meldet. Jetzt unterscheidet sie Bedienelement und
Innenteil (svg, ::after, __punkt, __lupe, __pfeil).

UND DIE REPARATUR WAR ERST ZU KLUG. Fuer das 24-Pixel-x in einer
Chat-Nachricht hatte ich eine unsichtbare Trefferflaeche gebaut
(`::after { inset: -10px }`), um die Zeile nicht hoeher zu machen.
Dann gemessen: Die Zeile IST schon 44 hoch -- `start.css` hebt unter
760 px bereits JEDEN button. Es fehlte nur die BREITE. Die Flaeche
haette ein Problem geloest, das es nicht gibt, und dafuer einen Trick
eingefuehrt, den man beim naechsten Lesen erst verstehen muss.
Jetzt schlicht `min-width: 44px`.

Gemessen am Bildschirm, mit und ohne Finger:
  Maus    .nachricht__weg 24x24  .chat__weg 34x34   (unveraendert)
  Finger  .nachricht__weg 44x44  .chat__weg 44x44

`pointer: coarse` und nicht `max-width`: Ein Tablet ist 1024 breit und
wird trotzdem mit dem Finger bedient.

NACHTRAG ZUR PRUEFUNG SELBST: Sie verlangte kurz, dass es die
Trefferflaeche GIBT -- und fiel um, als sie wieder verschwand. Eine
Pruefung, die eine Bauweise erzwingt statt eines Ergebnisses, steht
dem Aufraeumen im Weg. Sie erkennt sie jetzt an, verlangt sie aber
nicht.

pruef-tippziele 11/0, pruef-chat-optik gruen, pruef-css-klassen gruen,
pruef-nachfrage 33/0, pruef-leerzustand 13/0.
This commit is contained in:
2026-09-20 12:36:02 +02:00
parent 2f3fb03ffe
commit 18148675a9
39 changed files with 806 additions and 514 deletions
+27
View File
@@ -872,3 +872,30 @@
.hochlade__balken { border: 1px solid CanvasText; }
.hochlade__abbruch { border: 1px solid ButtonText; color: ButtonText; }
}
/* ---- Die kleinen Weg-Knöpfe auf Fingergeräten ----------------------
Gemessen am 20.09.2026 mit `pruef-tippziele`: fünf Bedienelemente
sind fest kleiner als 44 Pixel und wurden von der Fingerregel nicht
erfasst. Der unangenehmste davon ist `.chat__weg` (34×34) -- denn
direkt daneben sitzt der Knopf, der ein Gespräch FÜR ALLE auflöst.
Zwei 34-Pixel-Ziele nebeneinander, eines davon unwiderruflich.
NUR DIE BREITE FEHLTE -- nachgemessen, nicht angenommen.
`start.css` hebt unter 760 px bereits JEDEN `button` auf 44 Höhe.
Der erste Anlauf hier war deshalb eine unsichtbare Trefferfläche
(`::after { inset: -10px }`), um die Zeilen nicht höher zu machen --
gebaut, gemessen, und dabei kam heraus: Die Zeile IST schon 44 hoch.
Die Fläche hätte ein Problem gelöst, das es nicht gibt, und dafür
einen Trick eingeführt, den man beim nächsten Lesen erst verstehen
muss. Also die schlichte Lösung: Was man trifft, sieht man auch.
UND WARUM `pointer: coarse` UND NICHT `max-width`. Ein Tablet ist
1024 Pixel breit und wird trotzdem mit dem Finger bedient. Die
Breitenregel in `start.css` greift dort nicht -- diese hier schon.
Gefragt wird nach dem, worum es geht: Finger oder Maus. */
@media (pointer: coarse) {
.chat__weg, .todo__weg, .sicht__weg,
.nachricht__weg, .antwort-leiste__weg {
min-width: 44px; min-height: 44px;
}
}