Kundenansicht neu: kein Hineinzoomen beim Tippen auf dem iPhone

Messung am iPhone: die Seite ist verkleinert gezeichnet (462 px Breite
auf 393 pt, visualViewport.scale 0,85, wohl Seitenzoom 85 %). Unsere
16-px-Felder haben auf dem Bildschirm dann nur 13,6 pt, iOS zoomt beim
Antippen auf 100 % hinein und danach nicht zurück: Ausschnitt, rechts
abgeschnitten, die Eingabe liegt hinter der Tastatur.

zoom-ausgleich.js setzt auf iOS bei einem Maßstab unter 0,99 die Klasse
kn-zoom-ausgleich und den Faktor 1,01/scale an <html>; huelle.css gibt
dann allen Textfeldern der Kundenansicht 16 px mal Faktor, also auf dem
Bildschirm wieder 16 pt. Nie umgestellt, während ein Feld den Fokus
hat. Bei 100 % ändert sich nichts (Chromium: pixelgleich zu main).
Die Messung meldet zusätzlich Maßstab (3 Stellen), Faktor, Seitenbreite
und Schriftgröße des Feldes im Fokus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-29 11:30:56 +00:00
1 parent 17bce304eb
commit 1a09bebe41
6 files changed
+99 -5

No files matched your search

+4 -2
View File
@@ -6,7 +6,7 @@ const MAX = 80
const ZIEL = '/api/diag/hoehe'
const rund = (x) => (Number.isFinite(x) ? Math.round(x * 10) / 10 : null)
export function starteDiagHoehe({ win = window, doc = document }) {
export function starteDiagHoehe({ win = window, doc = document, zoom = null }) {
const t0 = Date.now()
let n = 0
const probe = (stil) => {
@@ -31,7 +31,9 @@ export function starteDiagHoehe({ win = window, doc = document }) {
iw: win.innerWidth, ih: win.innerHeight, ow: win.outerWidth, oh: win.outerHeight,
cw: doc.documentElement.clientWidth, ch: doc.documentElement.clientHeight, dh: doc.documentElement.scrollHeight,
sw: win.screen?.width, sh: win.screen?.height, sah: win.screen?.availHeight, dpr: win.devicePixelRatio,
vv: vv ? [rund(vv.width), rund(vv.height), rund(vv.offsetTop), rund(vv.pageTop), rund(vv.scale)] : null,
vv: vv ? [rund(vv.width), rund(vv.height), rund(vv.offsetTop), rund(vv.pageTop), Math.round(vv.scale * 1000) / 1000] : null,
zf: zoom?.faktor?.() ?? null, swd: doc.documentElement.scrollWidth,
fs: aktiv && aktiv !== doc.body ? win.getComputedStyle(aktiv).fontSize : null,
sy: rund(win.scrollY),
sa: [cs.paddingTop, cs.paddingRight, cs.paddingBottom, cs.paddingLeft].map((p) => rund(parseFloat(p))),
vh: [vh.offsetHeight, dvh.offsetHeight, svh.offsetHeight, lvh.offsetHeight],