Kundenansicht neu E-Fix M7: Bewegung reduziert ohne Rest-Fahrt der Leisten-Zeilen, #fortschritt unter dem haftenden Kopf
- Die Regel der zwei Fahrstuhl-Zeilen (#kn-zeile-haupt, #kn-zeile-etage, Spezifität 1-2-0) schlug das .kn-rw { transition: none } der Reduced-Motion-
Regel: mit "Bewegung reduzieren" glitt die alte Zeile noch 550 ms durch die neue (beide Texte überlagert). Jetzt steht im Reduced-Motion-Block
dieselbe Selektorliste mit transition: none.
- #fortschritt (scrollIntoView block start) ließ den Abschnitt "Was wir zuletzt erledigt haben" hinter dem haftenden Kopf beginnen: scroll-margin-top
mit Kopfhöhe, Bannerhöhe, Safe-Area und 8 px (Desktop 16 px). Die Gutschrift-Etage scrollt im Blatt, dessen Oberkante schon unter dem Kopf liegt: dort
ist nichts nötig.
Prüfung: Werkzeug-Ansichten kn-huelle-reduziert (jetzt auch die Zeilen bei offener Etage) und kn-p2-website-fortschritt, Pins in test/knEfixCss.test.js.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
140275022d
commit
29ca12a409
4 files changed
+14
-1
No files matched your search
@@ -13,7 +13,7 @@ const VERBOTEN = /linear-gradient|radial-gradient|conic-gradient|backdrop-filter
|
||||
test('Stil: keine verbotenen Mittel (Verläufe, Glas, Dunkelmodus, Lila, Gewicht 800), auch nicht in der Kopie des Composer-CSS', () => { for (const [n, c] of [['ansichten.css', A], ['oeffentlich.css', O], ['chat-composer.css', C]]) assert.doesNotMatch(c, VERBOTEN, n) })
|
||||
test('Stil: Farbliterale nur in Custom-Property-Deklarationen, jedes benutzte Token ist definiert', () => {
|
||||
for (const [n, c] of [['ansichten.css', A], ['oeffentlich.css', O]]) for (const z of c.split('\n')) if (!/^\s*--kn-[\w-]+:/.test(z)) assert.doesNotMatch(z, /#[0-9a-f]{3,8}\b|rgba?\(/i, `${n}: ${z.trim()}`)
|
||||
const definiert = new Set([...(TOKENS + A + O).matchAll(/(--kn-[\w-]+)\s*:/g)].map((m) => m[1]))
|
||||
const definiert = new Set([...(TOKENS + A + O + css('huelle.css')).matchAll(/(--kn-[\w-]+)\s*:/g)].map((m) => m[1])) // die Maße der Hülle (--kn-kopf-h, --kn-banner-h) stehen in huelle.css
|
||||
for (const m of (A + O).matchAll(/var\((--kn-[\w-]+)/g)) assert.ok(definiert.has(m[1]), m[1])
|
||||
})
|
||||
test('Stil: jede kn-Klasse der P2-Module hat eine Regel', () => {
|
||||
|
||||
@@ -87,3 +87,11 @@ test('M4: der Mitarbeiter-Banner steht oben (sticky), Kopf, Menü, Blatt und Kon
|
||||
const js = quelle('huelle.js')
|
||||
assert.match(js, /setProperty\?\.\('--kn-banner-h'/)
|
||||
})
|
||||
|
||||
test('M7: Bewegung reduziert nimmt auch die Fahrt der Fahrstuhl-Zeilen (Spezifität gleich, später im Blatt); #fortschritt hat scroll-margin-top für den haftenden Kopf', () => {
|
||||
const reduziert = HUELLE.slice(HUELLE.indexOf('@media (prefers-reduced-motion: reduce)'))
|
||||
assert.match(reduziert, /\.kn-leiste-reel\[data-etage="offen"\] #kn-zeile-haupt,\s*\.kn-leiste-reel:not\(\[data-etage="offen"\]\) #kn-zeile-etage\s*\{\s*transition:\s*none/)
|
||||
const A = lies('ansichten.css')
|
||||
assert.match(A, /\n\[data-abschnitt="aktivitaet"\] \{ scroll-margin-top: 16px/)
|
||||
assert.match(handyTeil(A), /\[data-abschnitt="aktivitaet"\] \{ scroll-margin-top: calc\(var\(--kn-banner-h\) \+ var\(--kn-kopf-h\) \+ env\(safe-area-inset-top\) \+ 8px\)/)
|
||||
})
|
||||
Reference in new issue
Block a user