Telefonen fastnade i inzoomat läge efter inloggning
Rapporterat med skärmdump: portalens första sida möttes kraftigt inzoomad efter inloggning på iPhone. Orsaken är iOS Safaris beteende, inte vår layout: ett formulärfält vars text är mindre än 16 px får webbläsaren att zooma in vid fokus — och den zoomar aldrig ut igen efter navigeringen. Inloggningens fält är 14 px och arbetsvyns 13 px, båda under tröskeln. Botemedlet är fältets textstorlek, inte viewport-metataggen. `maximum-scale=1` hade också stoppat inzoomningen men samtidigt tagit ifrån användaren nypzoomen, och ett tillgänglighetsverktyg offras inte för att slippa en CSS-rad. Regeln ligger i kaskaden på .alva-yta och gäller bara pekskärmar (hover: none, pointer: coarse) — på skrivbordet finns ingen autozoom och 13 px är designens täthet. Verifierat mot den bakade artefakten med pekskärmsemulering: inloggningen och arbetsvyns namnfält mäter 16 px på telefon, 14 respektive 13 px på skrivbord. Regeln låst i designtestet, som redan läser index.css. 769 tester, typkontroll, lint och artefaktmätning gröna. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
@@ -232,6 +232,19 @@ describe("ALVA-ytan bär sin egen typografi", () => {
|
|||||||
it("siffror sätts med fast bredd så beteckningar går att jämföra", () => {
|
it("siffror sätts med fast bredd så beteckningar går att jämföra", () => {
|
||||||
expect(css).toContain("tabular-nums");
|
expect(css).toContain("tabular-nums");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("formulärfält är minst 16 px på pekskärm — annars autozoomar iOS och fastnar", () => {
|
||||||
|
// Buggen som rapporterades från en telefon: inloggningens fält är
|
||||||
|
// 14 px, iOS zoomar in vid fokus och zoomar aldrig ut, och portalens
|
||||||
|
// första sida möts i inzoomat läge. Botemedlet är textstorleken,
|
||||||
|
// inte maximum-scale — nypzoomen är ett tillgänglighetsverktyg och
|
||||||
|
// får inte offras.
|
||||||
|
const regel = css.match(/@media \(hover: none\) and \(pointer: coarse\)[\s\S]*?\n\}/)?.[0] ?? "";
|
||||||
|
expect(regel).toContain(".alva-yta input");
|
||||||
|
expect(regel).toContain(".alva-yta textarea");
|
||||||
|
expect(regel).toContain(".alva-yta select");
|
||||||
|
expect(regel).toContain("font-size: 16px");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// ---- Snittet måste följa med i bygget ----------------------------------
|
// ---- Snittet måste följa med i bygget ----------------------------------
|
||||||
|
|||||||
@@ -199,6 +199,23 @@
|
|||||||
font-variant-numeric: tabular-nums;
|
font-variant-numeric: tabular-nums;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* iOS Safari zoomar in på ett formulärfält vars text är mindre än 16 px
|
||||||
|
— och zoomar inte ut igen efter navigeringen. Den som loggade in på en
|
||||||
|
telefon fastnade därför i inzoomat läge på portalens första sida.
|
||||||
|
|
||||||
|
Botemedlet är fältets textstorlek, inte viewport-metataggen:
|
||||||
|
`maximum-scale=1` hade också stoppat inzoomningen men samtidigt tagit
|
||||||
|
ifrån användaren nypzoomen, och ett tillgänglighetsverktyg ska inte
|
||||||
|
offras för att slippa en CSS-rad. Regeln gäller bara pekskärmar —
|
||||||
|
på skrivbordet finns ingen autozoom och 13 px är rätt täthet. */
|
||||||
|
@media (hover: none) and (pointer: coarse) {
|
||||||
|
.alva-yta input:not([type="checkbox"]):not([type="radio"]),
|
||||||
|
.alva-yta select,
|
||||||
|
.alva-yta textarea {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.alva-yta .font-mono {
|
.alva-yta .font-mono {
|
||||||
font-family:
|
font-family:
|
||||||
ui-monospace,
|
ui-monospace,
|
||||||
|
|||||||
Reference in New Issue
Block a user