Zoom og skalering må ikke være slået fra

Mange svagsynede kunder zoomer ind på mobilen for at læse priser, produktdetaljer og felterne i kassen. En viewport-indstilling, der blokerer zoom (user-scalable=no eller maximum-scale=1), gør lille tekst ulæselig og kan forhindre dem i at gennemføre et køb.

Regel-id
meta-viewport
Kilde
axe-core 4.13.0
Alvorlighed
Moderat
Rettelsesniveau
AUTO
på Shopify, Shopware, WooCommerce og Magento
Status
køres

Hvad kontrollen gør

Sørg for, at <meta name="viewport"> ikke slår tekstskalering og zoom fra

Reglen aflæser content-attributten på hvert <meta name="viewport">-element i dokumentet på øverste niveau. Viewport-tags inde i iframes testes ikke, og et tag, hvor content mangler eller er tom, består.

axe-core deler indholdet op i par af formen key=value ved kommaer og semikoloner. Store og små bogstaver behandles ens, mellemrum omkring nøgler og værdier ignoreres, og tagget fejler i tre tilfælde:

  • user-scalable=no
  • en numerisk user-scalable-værdi, der er større end -1 og mindre end 1, for eksempel user-scalable=0
  • en maximum-scale under 2, hvor maximum-scale=yes læses som 1, og en negativ værdi ignoreres

Andre nøgler som width, initial-scale og minimum-scale spiller ingen rolle. Fejlmeddelelsen nævner den indstilling, der blokerer zoom.

Reglen læser kun opmærkningen og zoomer ikke ind på siden, så den kan ikke afgøre, om teksten forbliver læsbar ved 200 %. Validiscans scanner grupperer fund efter regel, selektor og HTML-struktur, så det samme viewport-tag på alle sider i et tema bliver til ét fund.

Sådan retter du det

Fjern user-scalable=no og enhver maximum-scale-værdi under 2 fra <meta name="viewport">-tagget i layoutskabelonen; content="width=device-width, initial-scale=1" er nok.

WCAG-succeskriterier

Afsnit i EN 301 549

Afsnittet i EN 301 549 for hvert kriterium, fordelt på versioner af standarden
WCAG-kriterium Version 3.2.1 Version 4.1.1
1.4.4 9.1.4.4 9.1.4.4

Hvor en opskrift retter det

Shopify: opskrift meta-viewport-zoom

Vis før og efter (1)
Før og efter Eksempeldata

layout/checkout.liquid Ændringer i layout/checkout.liquid: 1 tilføjet, 1 fjernet

Ændringer i layout/checkout.liquid: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
6 6 <html class="no-js">
7 7 <head>
8 8 <meta charset="utf-8">
9 Fjernet <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
9 Tilføjet <meta name="viewport" content="width=device-width,initial-scale=1">
10 10 <meta name="robots" content="noindex">
11 11 <link rel="canonical" href="{{ canonical_url }}">
12 12 <!-- Checkout assets: //cdn.shopify.com/s/files/1/0712/3456/7890/t/12/assets/ (served locally by the fixture server) -->

layout/theme.focused.liquid Ændringer i layout/theme.focused.liquid: 1 tilføjet, 1 fjernet

Ændringer i layout/theme.focused.liquid: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
10 10 <head>
11 11 <meta charset="utf-8">
12 12 <meta http-equiv="X-UA-Compatible" content="IE=edge">
13 Fjernet <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
13 Tilføjet <meta name="viewport" content="width=device-width,initial-scale=1">
14 14 <title></title>
15 15 <link rel="canonical" href="{{ canonical_url }}">
16 16 <!-- Theme assets: //cdn.shopify.com/s/files/1/0712/3456/7890/t/12/assets/ (served locally by the fixture server) -->

layout/theme.liquid Ændringer i layout/theme.liquid: 1 tilføjet, 1 fjernet

Ændringer i layout/theme.liquid: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
11 11 <head>
12 12 <meta charset="utf-8">
13 13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 Fjernet <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
14 Tilføjet <meta name="viewport" content="width=device-width,initial-scale=1">
15 15 <meta name="theme-color" content="{{ settings.color_background }}">
16 16 <link rel="canonical" href="{{ canonical_url }}">
17 17 {%- comment -%} On the live store theme assets load from //cdn.shopify.com/s/files/1/0712/3456/7890/t/12/assets/; the fixture serves them from {{ routes.root_url }}assets/. {%- endcomment %}

Shopware: opskrift meta-viewport-zoom

Vis før og efter (1)
removes the zoom lock from the fixture theme and the rule stops firing Eksempeldata

Resources/views/storefront/layout/meta.html.twig Ændringer i Resources/views/storefront/layout/meta.html.twig: 1 tilføjet, 1 fjernet

Ændringer i Resources/views/storefront/layout/meta.html.twig: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
6 6
7 7 {% block layout_head_meta_tags_viewport %}
8 8 {# Added by the merchant's agency to stop "zoom jumps" on iOS. #}
9 Fjernet <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
9 Tilføjet <meta name="viewport" content="width=device-width, initial-scale=1">
10 10 {% endblock %}
11 11
12 12 {% block layout_head_meta_tags_general %}

WooCommerce: opskrift meta-viewport-zoom

Vis før og efter (1)
re-enables zoom in every header template of the fixture theme Eksempeldata

header-checkout.php Ændringer i header-checkout.php: 1 tilføjet, 1 fjernet

Ændringer i header-checkout.php: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
12 12 <head>
13 13 <meta charset="<?php bloginfo( 'charset' ); ?>">
14 14 <?php // VALIDISCAN-SEED meta-viewport: zooming is disabled. ?>
15 Fjernet <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
15 Tilføjet <meta name="viewport" content="width=device-width, initial-scale=1">
16 16 <?php wp_head(); ?>
17 17 </head>
18 18

header.php Ændringer i header.php: 1 tilføjet, 1 fjernet

Ændringer i header.php: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
14 14 <head>
15 15 <meta charset="<?php bloginfo( 'charset' ); ?>">
16 16 <?php // VALIDISCAN-SEED meta-viewport: zooming is disabled ("stops iOS zooming into inputs"). ?>
17 Fjernet <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
17 Tilføjet <meta name="viewport" content="width=device-width, initial-scale=1">
18 18 <?php wp_head(); ?>
19 19 </head>
20 20

Magento: opskrift meta-viewport-zoom

Vis før og efter (1)
removes the zoom block from default_head_blocks.xml and validates Eksempeldata

app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml: 1 tilføjet, 1 fjernet

Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml: 1 tilføjet, 1 fjernet
Linje før Linje efter Ændring Kode
3 3 <head>
4 4 <!-- VALIDISCAN-SEEDED meta-viewport: pinch zoom disabled (Luma 2.0-2.3 default kept by the theme).
5 5 Fixed variant: content="width=device-width, initial-scale=1". -->
6 Fjernet <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
6 Tilføjet <meta name="viewport" content="width=device-width, initial-scale=1"/>
7 7 <meta name="format-detection" content="telephone=no"/>
8 8 <css src="css/styles-m.css"/>
9 9 <css src="css/styles-l.css" media="screen and (min-width: 768px)"/>

Begynd med et gratis tjek af din webshop.

Send din webshops adresse. Validiscan scanner den og svarer med hver fejl, scanningen kan påvise, med siden og koden.

Bestil et gratis tjek

Eller skriv til info@validiscan.com.

Hvad det gratis tjek omfatter, og hvad det udelader
Du sender
din webshops adresse
Sider, der scannes
op til 15
Du får
hver fejl, scanningen kan påvise, med siden og koden
På din webshop
kun offentlige sider; intet login, intet købt, ingen formularer sendt
Hvad det ikke er
et fuldt audit

Skriv til Validiscan

Til et gratis tjek skal du skrive din webshops adresse og platform.

Validiscan bruger det, du sender, til at svare dig. Privatlivspolitik