screen1: "Wie geht's dir?" ist EINE Flaeche -- und die Spalten waren der Fehler
Filipe, mit dem Bildschirmfoto der Seite: "ich will dass diese seite
viel uebersichtlicher aussieht, es soll eine riesssen kachel sein wo
alles viel besser und geiler aussieht. los"
WAS ANDERS IST
--------------
Vorher lagen Gruppenkoepfe und Fragen flach nebeneinander in derselben
Spalte: jede Frage eine eigene Kachel mit Rand, Schatten und Fase,
dazwischen ab und zu eine Ueberschrift. Zwoelf Kacheln, kein Zusammenhang.
Jetzt: eine Flaeche (`b-flaeche`), darin je Gruppe ein Abschnitt mit
ihrem Kopf und ihren Fragen. Getrennt wird durch eine Linie, nicht durch
eine Luecke. Die Frage ist darin kein eigener Kasten mehr, sondern ein
flaches Feld; beantwortet erkennt man an der linken Kante. Obendrauf ein
Band, das den eigenen Stand zeigt ("2 von 9 Fragen dieser Runde
beantwortet") -- auf einer Seite, die man ausfuellt, ist genau das die
Uebersicht, die gefehlt hat.
DER EIGENTLICHE FUND: DER SPALTENSATZ
-------------------------------------
Nach dem Umbau stand auf dem Bildschirmfoto rechts oben eine Reihe
Antwortknoepfe ohne Ueberschrift darueber, und die Ueberschrift
"Miteinander" links unten neben fremden Fragen. Eine Ueberschrift, die
neben fremdem Inhalt steht, ordnet den falschen zu -- das ist nicht
unschoen, das ist falsch.
Ursache war `columns: 2` auf `#fragen`, dem Behaelter um ALLES. Solange
darin nur flache Fragen lagen, ging es auf. Seit die Fragen in Gruppen
stecken, schneidet der Spaltenumbruch mitten durch eine Gruppe. Das
`break-inside: avoid` daneben konnte nichts halten: Es galt fuer
`#fragen > .e-punkt`, und ein `.e-punkt` ist seit dem Umbau kein direktes
Kind von `#fragen` mehr. Die Regel lief ins Leere.
Zwei Spalten gibt es weiterhin -- aber INNERHALB einer Gruppe, ueber ein
Raster (`.b-gruppe__fragen`). Ein Raster verteilt Kaesten und bricht
keinen Textfluss um; es kann per Bauart nichts zerschneiden. Damit ist
die Ursache weg und nicht der Schaden ueberklebt.
`.b-feld__liste` stand in derselben Regel und kommt in keiner Seite und
keinem Skript mehr vor -- nachgesehen, nicht vermutet. Faellt mit weg.
GEPRUEFT WIRD DIE LAGE DER KAESTEN, NICHT DIE VERSCHACHTELUNG
-------------------------------------------------------------
pruef-befinden bekommt fuenf Messungen dazu. Wichtig dabei, und der
Grund fuer die Form: Eine Pruefung auf "steht der Kopf im richtigen
Abschnitt?" waere die ganze Zeit gruen gewesen. Nachgemessen war sie es
auch (`kopfInGruppe: true`), waehrend das Bild falsch war. Das HTML war
nie das Problem.
Gemessen wird deshalb, WO die Kaesten liegen: jede Frage unterhalb des
Kopfes ihrer Gruppe, keine Gruppe ragt in die naechste. Gegenprobe
gefahren -- mit dem Spaltensatz zurueck faellt das erste auf 5 von 6 und
das zweite auf 3 von 5, bei 1280 px. Die Pruefung kann also auch "nicht
in Ordnung" sagen.
pruef-befinden: 121 Pruefungen, 0 Fehler (vorher 116).
Gemessen bei 1280 und 390 px, keine Browsermeldungen.
Nebenbei: eine deutsche Anfuehrung in einer Pruefmeldung war mit einem
ASCII-Anfuehrungszeichen geschlossen.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1888,21 +1888,33 @@
|
||||
brauchen. Zwei Spalten halbieren den Weg, ohne eine Frage zu
|
||||
verstecken.
|
||||
|
||||
`break-inside: avoid` ist der Kern: Ohne das reisst eine Frage
|
||||
mitten im Text um, und dann steht ihre Antwortreihe in der anderen
|
||||
Spalte. */
|
||||
@media (min-width: 900px) {
|
||||
.b-feld__liste,
|
||||
#fragen {
|
||||
columns: 2;
|
||||
column-gap: 14px;
|
||||
}
|
||||
.b-feld__liste > .e-punkt,
|
||||
#fragen > .e-punkt {
|
||||
break-inside: avoid;
|
||||
-webkit-column-break-inside: avoid;
|
||||
}
|
||||
}
|
||||
ENTFERNT AM 23.09.2026, UND ES WAR DIE SPALTENREGEL SELBST.
|
||||
---------------------------------------------------------------
|
||||
Hier stand `columns: 2` auf `#fragen` — dem Behaelter um ALLES.
|
||||
Solange darin nur flache Fragen lagen, ging das auf. Seit die
|
||||
Fragen in ihren Gruppen stecken (`.b-gruppe`), reisst der
|
||||
Spaltenumbruch mitten durch eine GRUPPE: Ihr Kopf bleibt links
|
||||
unten, ihre Fragen wandern nach rechts oben — und ueber den
|
||||
Antwortknoepfen rechts steht dann die Ueberschrift der NAECHSTEN
|
||||
Gruppe. Genau das war auf Filipes Bildschirmfoto zu sehen.
|
||||
|
||||
`break-inside: avoid` haette das nicht gerettet: Es galt fuer
|
||||
`#fragen > .e-punkt`, und ein `.e-punkt` ist seit dem Umbau kein
|
||||
direktes Kind von `#fragen` mehr. Die Regel lief ins Leere, und
|
||||
nichts hielt den Umbruch auf.
|
||||
|
||||
Zwei Spalten gibt es weiterhin — aber INNERHALB einer Gruppe,
|
||||
ueber `.b-gruppe__fragen` (Abschnitt „Eine Flaeche" weiter unten).
|
||||
Das ist ein Raster statt eines Spaltensatzes: Es kann per
|
||||
Bauart nichts zerschneiden, weil es Kaesten verteilt und keinen
|
||||
Textfluss umbricht. Damit ist die Ursache weg und nicht nur der
|
||||
sichtbare Schaden ueberklebt.
|
||||
|
||||
`.b-feld__liste` stand in derselben Regel und kommt in keiner
|
||||
Seite und keinem Skript des Hauses mehr vor — nachgesehen, nicht
|
||||
vermutet. Sie faellt deshalb mit weg, statt als toter Name
|
||||
stehenzubleiben, den beim naechsten Mal jemand fuer benutzt
|
||||
haelt. */
|
||||
|
||||
/* Die Marke bricht nicht um -- "JEDE RUNDE" auf zwei Zeilen macht die
|
||||
Kachel hoeher als die Frage daneben und sieht aus wie ein Fehler.
|
||||
@@ -2116,3 +2128,131 @@
|
||||
.e-fuer__karte:has(input:checked) { border: 2px solid Highlight; }
|
||||
.e-fuer__kurz { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
„WIE GEHT'S DIR?" IST EINE FLÄCHE (23.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „ich will dass diese seite viel übersichtlicher aussieht,
|
||||
es soll eine riesßen kachel sein wo alles viel besser und geiler
|
||||
aussieht."
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WAS AUF SEINEM BILDSCHIRMFOTO WIRKLICH SCHIEFLIEGT
|
||||
|
||||
Die Fragen lagen als einzelne Kacheln in zwei Spalten, und die
|
||||
Gruppenköpfe lagen FLACH dazwischen — im selben Raster. Dadurch
|
||||
rutschte der Kopf einer Gruppe neben die Fragen einer anderen:
|
||||
„Miteinander" steht links unten neben den Fragen von „Klarheit &
|
||||
Rückhalt".
|
||||
|
||||
Das ist nicht nur unruhig, es ist falsch. Eine Überschrift, die
|
||||
neben fremdem Inhalt steht, ordnet den falschen zu.
|
||||
|
||||
Deshalb gehört jetzt jede Gruppe zusammen (ein `<section>` mit Kopf
|
||||
und eigenem Raster, gebaut in befinden.js), und alle Gruppen liegen
|
||||
in EINER Fläche. Getrennt wird durch eine Linie statt durch eine
|
||||
Lücke — dieselbe Entscheidung wie bei den Regeln am 22.09.
|
||||
===================================================================== */
|
||||
.b-flaeche {
|
||||
position: relative;
|
||||
margin: 0 0 18px;
|
||||
padding: 18px 22px 22px;
|
||||
background:
|
||||
linear-gradient(170deg,
|
||||
color-mix(in srgb, var(--akzent) 9%, transparent) 0%,
|
||||
color-mix(in srgb, var(--akzent) 3%, transparent) 18%,
|
||||
transparent 34%),
|
||||
color-mix(in srgb, var(--tinte, #0a0f18) 94%, #ffffff 6%);
|
||||
border: 1px solid var(--rand);
|
||||
border-radius: var(--radius-klein, 12px);
|
||||
}
|
||||
@media (max-width: 620px) { .b-flaeche { padding: 14px 14px 16px; } }
|
||||
|
||||
/* ---- Der eigene Stand ------------------------------------------------ */
|
||||
.b-stand { margin: 0 0 18px; }
|
||||
.b-stand__bahn {
|
||||
height: 6px; border-radius: 999px; overflow: hidden;
|
||||
background: rgba(255, 255, 255, .07);
|
||||
}
|
||||
.b-stand__fuellung {
|
||||
display: block; height: 100%; width: 0; border-radius: 999px;
|
||||
background: linear-gradient(90deg,
|
||||
color-mix(in srgb, var(--akzent) 90%, #ffffff),
|
||||
color-mix(in srgb, var(--akzent) 55%, transparent));
|
||||
transition: width var(--tempo, .2s) ease;
|
||||
}
|
||||
.b-stand__wort {
|
||||
margin: 7px 0 0;
|
||||
font-size: .8rem; font-weight: 600;
|
||||
color: var(--text-leise);
|
||||
}
|
||||
/* Fertig ist eine gute Nachricht und darf so aussehen. */
|
||||
.b-stand[data-fertig="ja"] .b-stand__wort {
|
||||
color: color-mix(in srgb, var(--scout-haupt, #8fd6a6) 76%, #ffffff);
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.b-stand__fuellung { transition: none; }
|
||||
}
|
||||
|
||||
/* ---- Die Gruppen darin ----------------------------------------------- */
|
||||
.b-gruppe {
|
||||
padding: 20px 0 0;
|
||||
border-top: 1px solid color-mix(in srgb, var(--rand) 70%, transparent);
|
||||
margin-top: 20px;
|
||||
}
|
||||
.b-gruppe:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
|
||||
|
||||
/* Der Kopf bekommt einen Balken in der Farbe seiner Gruppe. Die
|
||||
Nummer setzt befinden.js als `--gruppe-nr`; die Farbe entsteht
|
||||
daraus, nicht aus einer Liste im Skript — sechs Farbnamen dort
|
||||
wären eine zweite Farbliste neben dem Haus. */
|
||||
.b-flaeche .e-feld {
|
||||
display: grid; gap: 3px;
|
||||
margin: 0 0 12px; padding: 0 0 0 13px;
|
||||
position: relative;
|
||||
}
|
||||
.b-flaeche .e-feld::before {
|
||||
content: ""; position: absolute; left: 0; top: 2px; bottom: 2px;
|
||||
width: 4px; border-radius: 2px;
|
||||
background: linear-gradient(180deg,
|
||||
hsl(calc(var(--gruppe-nr, 0) * 47 + 190) 70% 68%),
|
||||
hsl(calc(var(--gruppe-nr, 0) * 47 + 190) 70% 68% / .25));
|
||||
}
|
||||
.b-flaeche .e-feld__wort {
|
||||
margin: 0; font-size: 1.04rem; font-weight: 700;
|
||||
display: flex; align-items: center; gap: 9px;
|
||||
}
|
||||
.b-flaeche .e-feld__text {
|
||||
margin: 0; font-size: .86rem; color: var(--text-leise); line-height: 1.55;
|
||||
}
|
||||
|
||||
/* Die Fragen einer Gruppe nebeneinander -- aber IMMER innerhalb ihrer
|
||||
Gruppe, nie über sie hinaus. Genau das ging vorher schief. */
|
||||
.b-gruppe__fragen {
|
||||
display: grid; gap: 10px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(min(310px, 100%), 1fr));
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
/* Die Frage ist in der Fläche keine eigene Kachel mehr, sondern ein
|
||||
flaches Feld: ein Rahmen, kein Kasten mit Schatten und Fase. Zwölf
|
||||
Kacheln in einer Kachel sind eine Kachel zu viel. */
|
||||
.b-flaeche .e-punkt {
|
||||
background: rgba(255, 255, 255, .028);
|
||||
border: 1px solid var(--rand);
|
||||
border-radius: var(--radius-klein, 12px);
|
||||
box-shadow: none;
|
||||
clip-path: none;
|
||||
}
|
||||
/* Beantwortet sieht man an der linken Kante -- ohne die muss man die
|
||||
Knöpfe lesen, um zu wissen, ob schon etwas dasteht. */
|
||||
.b-flaeche .e-punkt[data-stufe] {
|
||||
border-left: 3px solid color-mix(in srgb, var(--akzent) 55%, transparent);
|
||||
}
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.b-flaeche { border: 1px solid CanvasText; }
|
||||
.b-gruppe { border-top: 1px solid CanvasText; }
|
||||
.b-flaeche .e-feld::before { background: CanvasText; }
|
||||
}
|
||||
|
||||
@@ -183,7 +183,37 @@
|
||||
const uebrig = daten.punkte.filter((pt) => !bekannt.has(pt.feld));
|
||||
if (uebrig.length) gruppen.push({ feld: null, punkte: uebrig });
|
||||
|
||||
/* =================================================================
|
||||
EINE FLAECHE, GRUPPEN DARIN (23.09.2026)
|
||||
=================================================================
|
||||
|
||||
Filipe: „ich will dass diese seite viel übersichtlicher
|
||||
aussieht, es soll eine riesßen kachel sein wo alles viel besser
|
||||
und geiler aussieht."
|
||||
|
||||
VORHER lagen Gruppenkoepfe und Fragen FLACH nebeneinander in
|
||||
derselben Spalte -- jede Frage eine eigene Kachel mit eigenem
|
||||
Rand, dazwischen ab und zu eine Ueberschrift. Im zweispaltigen
|
||||
Raster rutschte der Kopf einer Gruppe dadurch neben die Fragen
|
||||
einer anderen; auf seinem Bildschirmfoto steht „Miteinander"
|
||||
links unten neben den Fragen von „Klarheit & Rückhalt".
|
||||
|
||||
Das ist nicht nur unschoen, es ist FALSCH: Eine Ueberschrift,
|
||||
die neben fremdem Inhalt steht, ordnet den falschen zu.
|
||||
|
||||
Jetzt gehoert jede Gruppe zusammen: ein `<section>` mit ihrem
|
||||
Kopf und ihren Fragen darin, und das Ganze liegt in EINER
|
||||
Flaeche (b-flaeche in befinden.html). Getrennt wird durch eine
|
||||
Linie, nicht durch eine Luecke -- dieselbe Entscheidung wie bei
|
||||
den Regeln am 22.09.
|
||||
|
||||
DIE GRUPPE TRAEGT IHRE NUMMER als CSS-Variable. Daraus faerbt
|
||||
die Stilvorlage den Balken vor der Ueberschrift; eine Farbe je
|
||||
Gruppe im Skript waere eine zweite Farbliste. */
|
||||
let nr = 0;
|
||||
for (const g of gruppen) {
|
||||
const abschnitt = el('section', 'b-gruppe');
|
||||
abschnitt.style.setProperty('--gruppe-nr', String(nr++));
|
||||
if (g.feld) {
|
||||
const kopf = el('div', 'e-feld');
|
||||
const wort = el('h3', 'e-feld__wort');
|
||||
@@ -195,10 +225,49 @@
|
||||
wort.append(document.createTextNode(g.feld.name));
|
||||
kopf.append(wort);
|
||||
if (g.feld.text) kopf.append(el('p', 'e-feld__text', g.feld.text));
|
||||
ziel.append(kopf);
|
||||
abschnitt.append(kopf);
|
||||
}
|
||||
for (const pt of g.punkte) zeichneFrage(pt, ziel);
|
||||
const raster = el('div', 'b-gruppe__fragen');
|
||||
for (const pt of g.punkte) zeichneFrage(pt, raster);
|
||||
abschnitt.append(raster);
|
||||
ziel.append(abschnitt);
|
||||
}
|
||||
fortschrittZeigen();
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
WIE WEIT BIN ICH? (23.09.2026)
|
||||
|
||||
„viel übersichtlicher" heisst bei einer Seite, auf der man etwas
|
||||
AUSFUELLT, vor allem eines: zu wissen, wie viel noch kommt. Der
|
||||
Kasten oben sagt „9 von 18 Fragen dran" -- das ist die Runde,
|
||||
nicht der eigene Stand.
|
||||
|
||||
Gezaehlt werden die Fragen, die WIRKLICH auf dem Bildschirm
|
||||
stehen, und davon die mit einer Antwort aus dieser Runde. Eine
|
||||
Zahl aus den Daten waere eine zweite Rechnung neben dem, was man
|
||||
sieht -- und zwei Rechnungen ueber dasselbe gehen irgendwann
|
||||
auseinander.
|
||||
|
||||
`aria-live` steht im HTML: Wer nicht hinsieht, bekommt den neuen
|
||||
Stand vorgelesen, sobald er eine Frage beantwortet. */
|
||||
function fortschrittZeigen() {
|
||||
const band = $('b-stand');
|
||||
if (!band) return;
|
||||
const fragen = [...document.querySelectorAll('#fragen .e-punkt')];
|
||||
const fertig = fragen.filter((f) => f.dataset.stufe).length;
|
||||
const gesamt = fragen.length;
|
||||
if (!gesamt) { band.hidden = true; return; }
|
||||
band.hidden = false;
|
||||
const balken = $('b-stand-balken');
|
||||
if (balken) balken.style.width = `${Math.round((fertig / gesamt) * 100)}%`;
|
||||
const wort = $('b-stand-wort');
|
||||
if (wort) {
|
||||
wort.textContent = fertig === gesamt
|
||||
? `Alle ${gesamt} Fragen dieser Runde beantwortet.`
|
||||
: `${fertig} von ${gesamt} Fragen dieser Runde beantwortet.`;
|
||||
}
|
||||
band.dataset.fertig = fertig === gesamt ? 'ja' : 'nein';
|
||||
}
|
||||
|
||||
/** Eine einzelne Frage. Ausgelagert, damit die Gliederung oben
|
||||
@@ -237,6 +306,10 @@
|
||||
b.setAttribute('aria-pressed', String(b === knopf));
|
||||
}
|
||||
z.dataset.stufe = stufe;
|
||||
/* DER STAND OBEN ZIEHT SOFORT MIT. Wer eine Frage beantwortet
|
||||
und die Zahl erst beim naechsten Laden steigen sieht, haelt
|
||||
sie fuer kaputt. */
|
||||
fortschrittZeigen();
|
||||
const s = await hole(`/workspace/api/entwicklung/mich/${pt.schluessel}`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
|
||||
Reference in New Issue
Block a user