2.5.8 - Interaktív mutató célpontok legkisebb mérete
Röviden a szabványpontról
A WCAG 2.2 szabványpont 2.5.8 előírja, hogy az interaktív mutató célpontok—mint a gombok, linkek és űrlap vezérlők—legalább 24×24 CSS pixel méretűek legyenek, kivéve ha specifikus kivételek vonatkoznak rájuk. Ez a szabály minden olyan felhasználói felület komponensre vonatkozik, amely mutató bevitellel aktiválható (egér, érintés, stylus stb.). A cél biztosítani, hogy az interaktív elemek elég nagyok legyenek a könnyű érintéshez, vagy kattintáshoz, csökkentve a hibákat és a frusztrációt a korlátozott motoros kontrollal rendelkező felhasználók esetén, vagy a nagy pontosságot igénylő feladatok elvégzésénél.
Mire vonatkozik: Minden interaktív felhasználói felület komponensére, amely mutató bevitellel aktiválható: gombok, linkek, űrlap vezérlők, egyéni komponensek.
Cél: A méretkövetelmény segít:
- Megakadályozni a közeli vezérlők véletlen aktiválását
- Támogatni az érintőbevitelre támaszkodó felhasználókat
- Javítani a finommotoros készségekkel rendelkező nehézségekkel élők élményét
- Csökkenteni a kattintási/érintési hibákat
Kiket érint
Elsődleges felhasználók: Mozgássérült személyek, akiknek nehézséget okoz a pontos mutató mozgások végrehajtása, mint a remegéssel élők, korlátozott kézügyességgel rendelkezők, vagy segítő technológiákat használók (szájbot, fejmutató).
Másodlagos előnyök: A nagyobb célpontok javítják minden felhasználó élményét érintőeszközökön, beleértve a nagyobb ujjakkal rendelkezőket, vagy olyan helyzetekben, ahol a pontos mutatás nehéz (pl. járás közben vagy mozgó mobileszköz használatakor).
Tesztelés
- Manuális mérés: Használd a böngésző fejlesztői eszközeit (pl. Chrome DevTools) az interaktív elemek számított méretének ellenőrzésére és győződj meg róla, hogy elérik a minimum 24×24 CSS pixelt
- Automatizált eszközök: Futtass akadálymentességi szkennereket, mint az axe DevTools, amelyek jelzik a 24×24 pixelnél kisebb célpontokat
- Érintőcélpont tesztelés: Érintőeszközökön próbáld meg megérinteni az interaktív elemeket, hogy megerősítsd, könnyű aktiválni őket anélkül, hogy véletlenül a szomszédos vezérlőket érintenéd
- Billentyűzet fókusz tesztelés: Biztosítsd, hogy a billentyűzet fókusz stílusok egyértelműen jelzik a célpontot és hogy a célpontok nem túl kicsik a billentyűzetes működtetéshez
- Felhasználói tesztelés: Végezz használhatósági teszteket mozgássérült felhasználókkal, hogy megerősítsd, a célpont méretek megfelelőek valós helyzetekben
Jó megoldások
1. Megfelelő méretű gombok
<!-- Jó: Gombok megfelelő minimum mérettel -->
<div class="gomb-pelda-container">
<h3>Megfelelő méretű gombok</h3>
<div class="gomb-sor">
<button class="jo-gomb-alap" style="width: 32px; height: 32px;">
✓
</button>
<span class="magyarazat">32×32px - megfelel a minimum követelménynek</span>
</div>
<div class="gomb-sor">
<button class="jo-gomb-kozepes">
Mentés
</button>
<span class="magyarazat">Padding-gel megfelelő méret biztosítva</span>
</div>
<div class="gomb-sor">
<button class="jo-gomb-nagy">
🚀 Indítás
</button>
<span class="magyarazat">Nagy gomb jó kattintási élménnyel</span>
</div>
<div class="gomb-sor">
<button class="jo-gomb-ikon" aria-label="Beállítások megnyitása">
⚙️
</button>
<span class="magyarazat">Ikon gomb megfelelő mérettel és leírással</span>
</div>
<div class="gomb-sor">
<button class="jo-gomb-szoveg-ikon">
<span class="ikon">📁</span>
<span class="szoveg">Fájl megnyitása</span>
</button>
<span class="magyarazat">Kombinált ikon+szöveg gomb</span>
</div>
</div>
<style>
.gomb-pelda-container {
max-width: 600px;
margin: 20px auto;
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
}
.gomb-sor {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 15px;
padding: 10px;
background: white;
border-radius: 6px;
border: 1px solid #dee2e6;
}
.magyarazat {
font-size: 14px;
color: #6c757d;
flex: 1;
}
/* Alap gomb 32x32px */
.jo-gomb-alap {
background: #28a745;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
display: flex;
align-items: center;
justify-content: center;
}
.jo-gomb-alap:hover {
background: #218838;
}
.jo-gomb-alap:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Közepes gomb padding-gel */
.jo-gomb-kozepes {
background: #007bff;
color: white;
border: none;
border-radius: 6px;
padding: 12px 20px; /* Biztosítja a min. 24x24px méretet */
cursor: pointer;
font-size: 14px;
font-weight: 500;
min-width: 24px;
min-height: 24px;
}
.jo-gomb-kozepes:hover {
background: #0056b3;
}
.jo-gomb-kozepes:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Nagy gomb */
.jo-gomb-nagy {
background: #fd7e14;
color: white;
border: none;
border-radius: 8px;
padding: 16px 32px;
cursor: pointer;
font-size: 16px;
font-weight: bold;
min-width: 44px; /* Még nagyobb jobb élményért */
min-height: 44px;
}
.jo-gomb-nagy:hover {
background: #e8630a;
transform: translateY(-1px);
}
.jo-gomb-nagy:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Ikon gomb */
.jo-gomb-ikon {
background: #6c757d;
color: white;
border: none;
border-radius: 50%;
width: 40px;
height: 40px;
cursor: pointer;
font-size: 18px;
display: flex;
align-items: center;
justify-content: center;
}
.jo-gomb-ikon:hover {
background: #5a6268;
}
.jo-gomb-ikon:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Szöveg+ikon gomb */
.jo-gomb-szoveg-ikon {
background: #17a2b8;
color: white;
border: none;
border-radius: 6px;
padding: 12px 16px;
cursor: pointer;
font-size: 14px;
display: flex;
align-items: center;
gap: 8px;
min-width: 24px;
min-height: 24px;
}
.jo-gomb-szoveg-ikon:hover {
background: #138496;
}
.jo-gomb-szoveg-ikon:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.jo-gomb-szoveg-ikon .ikon {
font-size: 16px;
}
.jo-gomb-szoveg-ikon .szoveg {
font-weight: 500;
}
</style>
Ezek a gombok mind megfelelnek a 24×24 pixel minimum követelménynek. A padding, explicit width/height vagy nagyobb méretek biztosítják a megfelelő kattintási területet.
2. Linkek padding-gel növelt kattintási területtel
<!-- Jó: Linkek megfelelő kattintási területtel -->
<div class="link-pelda-container">
<h3>Megfelelő méretű linkek</h3>
<div class="link-sor">
<a href="#" class="jo-link-padding">Bővebben</a>
<span class="magyarazat">Padding biztosítja a megfelelő kattintási területet</span>
</div>
<div class="link-sor">
<a href="#" class="jo-link-gomb">
<span class="link-ikon">📎</span>
<span class="link-szoveg">Fájl letöltése</span>
</a>
<span class="magyarazat">Gomb-szerű link megfelelő mérettel</span>
</div>
<div class="link-sor">
<a href="#" class="jo-link-ikon" aria-label="Szerkesztés">
✏️
</a>
<span class="magyarazat">Ikon link megfelelő mérettel és alt szöveggel</span>
</div>
<nav class="navigacio-pelda">
<h4>Navigációs linkek</h4>
<ul class="nav-lista">
<li><a href="#" class="nav-link">Főoldal</a></li>
<li><a href="#" class="nav-link">Termékek</a></li>
<li><a href="#" class="nav-link">Szolgáltatások</a></li>
<li><a href="#" class="nav-link">Kapcsolat</a></li>
</ul>
<span class="magyarazat">Navigációs linkek megfelelő padding-gel</span>
</nav>
<div class="breadcrumb-pelda">
<h4>Breadcrumb navigáció</h4>
<nav aria-label="Breadcrumb">
<ol class="breadcrumb-lista">
<li><a href="#" class="breadcrumb-link">Kezdőlap</a></li>
<li><span class="breadcrumb-elvalaszto">/</span></li>
<li><a href="#" class="breadcrumb-link">Kategória</a></li>
<li><span class="breadcrumb-elvalaszto">/</span></li>
<li><span class="breadcrumb-jelenlegi">Jelenlegi oldal</span></li>
</ol>
</nav>
<span class="magyarazat">Breadcrumb linkek megfelelő mérettel</span>
</div>
</div>
<style>
.link-pelda-container {
max-width: 700px;
margin: 20px auto;
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
}
.link-sor {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 15px;
padding: 10px;
background: white;
border-radius: 6px;
border: 1px solid #dee2e6;
}
.navigacio-pelda, .breadcrumb-pelda {
margin: 20px 0;
padding: 15px;
background: white;
border-radius: 6px;
border: 1px solid #dee2e6;
}
/* Padding-gel növelt link */
.jo-link-padding {
display: inline-block;
padding: 12px 16px; /* Biztosítja a min. 24x24px méretet */
background: #e7f3ff;
color: #0066cc;
text-decoration: none;
border-radius: 4px;
font-weight: 500;
min-width: 24px;
min-height: 24px;
text-align: center;
}
.jo-link-padding:hover {
background: #cce7ff;
text-decoration: underline;
}
.jo-link-padding:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Gomb-szerű link */
.jo-link-gomb {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 12px 20px;
background: #28a745;
color: white;
text-decoration: none;
border-radius: 6px;
font-weight: 500;
min-width: 24px;
min-height: 24px;
}
.jo-link-gomb:hover {
background: #218838;
color: white;
text-decoration: none;
}
.jo-link-gomb:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.link-ikon {
font-size: 16px;
}
/* Ikon link */
.jo-link-ikon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
background: #6c757d;
color: white;
text-decoration: none;
border-radius: 50%;
font-size: 16px;
}
.jo-link-ikon:hover {
background: #5a6268;
color: white;
text-decoration: none;
}
.jo-link-ikon:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Navigációs linkek */
.nav-lista {
list-style: none;
padding: 0;
margin: 10px 0;
display: flex;
gap: 5px;
flex-wrap: wrap;
}
.nav-lista li {
margin: 0;
}
.nav-link {
display: block;
padding: 12px 16px; /* Megfelelő kattintási terület */
background: #007bff;
color: white;
text-decoration: none;
border-radius: 4px;
font-weight: 500;
min-width: 24px;
min-height: 24px;
text-align: center;
}
.nav-link:hover {
background: #0056b3;
color: white;
text-decoration: none;
}
.nav-link:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
/* Breadcrumb navigáció */
.breadcrumb-lista {
list-style: none;
padding: 0;
margin: 10px 0;
display: flex;
align-items: center;
gap: 5px;
flex-wrap: wrap;
}
.breadcrumb-lista li {
margin: 0;
}
.breadcrumb-link {
display: inline-block;
padding: 8px 12px; /* Megfelelő kattintási terület */
color: #0066cc;
text-decoration: none;
border-radius: 3px;
min-width: 24px;
min-height: 24px;
text-align: center;
}
.breadcrumb-link:hover {
background: #e7f3ff;
text-decoration: underline;
}
.breadcrumb-link:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
background: #e7f3ff;
}
.breadcrumb-elvalaszto {
color: #6c757d;
margin: 0 5px;
}
.breadcrumb-jelenlegi {
padding: 8px 12px;
color: #6c757d;
font-weight: 500;
}
.magyarazat {
font-size: 14px;
color: #6c757d;
flex: 1;
}
</style>
A linkek padding-gel vagy explicit méretekkel biztosítják a 24×24 pixel minimum kattintási területet, javítva a használhatóságot minden eszközön.
3. Kis ikon gomb szomszédos nagyobb célponttal
<!-- Jó: Kis ikon gomb nagyobb alternatívával -->
<div class="szomszedos-celpontok-container">
<h3>Kis gombok nagyobb alternatívákkal</h3>
<div class="celpontok-sor">
<div class="info-kombináció">
<!-- 20x20px kis ikon gomb (kivétel a szabály alól) -->
<button class="kis-info-gomb"
style="width: 20px; height: 20px;"
aria-label="Információ">
ℹ️
</button>
<!-- Szomszédos nagyobb link célpont -->
<a href="#" class="nagyobb-info-link">
További információk
</a>
&div>
<span class="magyarazat">20×20px gomb megengedett, mert van szomszédos nagyobb célpont</span>
</div>
<div class="celpontok-sor">
<div class="szerkesztesi-kombináció">
<button class="kis-szerkesztes-gomb"
style="width: 18px; height: 18px;"
aria-label="Gyors szerkesztés">
✏️
</button>
<a href="#" class="nagyobb-szerkesztes-link">
Szerkesztés
</a>
</div>
<span class="magyarazat">18×18px gomb + nagyobb szerkesztés link</span>
</div>
<div class="celpontok-sor">
<div class="torles-kombináció">
<button class="kis-torles-gomb"
style="width: 16px; height: 16px;"
aria-label="Gyors törlés">
❌
</button>
<button class="nagyobb-torles-gomb">
🗑️ Törlés
</button>
</div>
<span class="magyarazat">16×16px kis gomb + nagy törlés gomb</span>
</div>
<div class="lista-elemek-pelda">
<h4>Lista elemek kis és nagy vezérlőkkel</h4>
<ul class="elemek-lista">
<li class="lista-elem">
<span class="elem-tartalom">Dokumentum 1.pdf</span>
<div class="elem-muveletek">
<button class="kis-letoltes"
style="width: 20px; height: 20px;"
aria-label="Gyors letöltés">
⬇️
</button>
<a href="#" class="nagy-letoltes-link">
💾 Letöltés
</a>
<button class="kis-megosztás"
style="width: 20px; height: 20px;"
aria-label="Gyors megosztás">
🔗
</button>
<button class="nagy-megosztás-gomb">
📤 Megosztás
</button>
</div>
</li>
<li class="lista-elem">
<span class="elem-tartalom">Kép_2024.jpg</span>
<div class="elem-muveletek">
<button class="kis-letoltes"
style="width: 20px; height: 20px;"
aria-label="Gyors letöltés">
⬇️
</button>
<a href="#" class="nagy-letoltes-link">
💾 Letöltés
</a>
<button class="kis-megosztás"
style="width: 20px; height: 20px;"
aria-label="Gyors megosztás">
🔗
</button>
<button class="nagy-megosztás-gomb">
📤 Megosztás
</button>
</div>
</li>
</ul>
</div>
</div>
<style>
.szomszedos-celpontok-container {
max-width: 800px;
margin: 20px auto;
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
}
.celpontok-sor {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 15px;
padding: 15px;
background: white;
border-radius: 6px;
border: 1px solid #dee2e6;
}
.info-kombináció, .szerkesztesi-kombináció, .torles-kombináció {
display: flex;
align-items: center;
gap: 8px;
}
/* Kis info gomb */
.kis-info-gomb {
background: #17a2b8;
color: white;
border: none;
border-radius: 50%;
cursor: pointer;
font-size: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.kis-info-gomb:hover {
background: #138496;
}
.kis-info-gomb:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Nagyobb info link */
.nagyobb-info-link {
display: inline-block;
padding: 8px 16px;
background: #e7f3ff;
color: #0066cc;
text-decoration: none;
border-radius: 4px;
font-size: 14px;
min-width: 24px;
min-height: 24px;
}
.nagyobb-info-link:hover {
background: #cce7ff;
text-decoration: underline;
}
.nagyobb-info-link:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Kis szerkesztés gomb */
.kis-szerkesztes-gomb {
background: #ffc107;
color: #212529;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 9px;
display: flex;
align-items: center;
justify-content: center;
}
.kis-szerkesztes-gomb:hover {
background: #e0a800;
}
.kis-szerkesztes-gomb:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Nagyobb szerkesztés link */
.nagyobb-szerkesztes-link {
display: inline-block;
padding: 8px 16px;
background: #fff3cd;
color: #856404;
text-decoration: none;
border-radius: 4px;
font-size: 14px;
min-width: 24px;
min-height: 24px;
}
.nagyobb-szerkesztes-link:hover {
background: #ffeaa7;
text-decoration: underline;
}
.nagyobb-szerkesztes-link:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Kis törlés gomb */
.kis-torles-gomb {
background: #dc3545;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 8px;
display: flex;
align-items: center;
justify-content: center;
}
.kis-torles-gomb:hover {
background: #c82333;
}
.kis-torles-gomb:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Nagyobb törlés gomb */
.nagyobb-torles-gomb {
background: #dc3545;
color: white;
border: none;
border-radius: 4px;
padding: 8px 16px;
cursor: pointer;
font-size: 14px;
min-width: 24px;
min-height: 24px;
}
.nagyobb-torles-gomb:hover {
background: #c82333;
}
.nagyobb-torles-gomb:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Lista elemek */
.lista-elemek-pelda {
margin-top: 30px;
padding: 15px;
background: white;
border-radius: 6px;
border: 1px solid #dee2e6;
}
.elemek-lista {
list-style: none;
padding: 0;
margin: 15px 0;
}
.lista-elem {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
margin-bottom: 10px;
background: #f8f9fa;
border-radius: 4px;
border: 1px solid #dee2e6;
}
.elem-tartalom {
font-weight: 500;
flex: 1;
}
.elem-muveletek {
display: flex;
align-items: center;
gap: 8px;
}
/* Kis letöltés gomb */
.kis-letoltes {
background: #28a745;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.kis-letoltes:hover {
background: #218838;
}
.kis-letoltes:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Nagy letöltés link */
.nagy-letoltes-link {
display: inline-block;
padding: 6px 12px;
background: #d4edda;
color: #155724;
text-decoration: none;
border-radius: 4px;
font-size: 12px;
min-width: 24px;
min-height: 24px;
}
.nagy-letoltes-link:hover {
background: #c3e6cb;
text-decoration: underline;
}
.nagy-letoltes-link:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Kis megosztás gomb */
.kis-megosztás {
background: #6f42c1;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.kis-megosztás:hover {
background: #5a32a3;
}
.kis-megosztás:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
/* Nagy megosztás gomb */
.nagy-megosztás-gomb {
background: #6f42c1;
color: white;
border: none;
border-radius: 4px;
padding: 6px 12px;
cursor: pointer;
font-size: 12px;
min-width: 24px;
min-height: 24px;
}
.nagy-megosztás-gomb:hover {
background: #5a32a3;
}
.nagy-megosztás-gomb:focus {
outline: 2px solid #ffbf47;
outline-offset: 2px;
}
.magyarazat {
font-size: 14px;
color: #6c757d;
flex: 1;
}
</style>
A kis gombok (16-20px) megengedettek, mert szomszédos nagyobb célpontok biztosítják az alternatív elérést ugyanahhoz a funkcióhoz.
4. CSS media query-k érintőeszközökhöz
<!-- Jó: Adaptív célpont méretek eszköz típus szerint -->
<div class="adaptiv-celpontok-container">
<h3>Adaptív célpont méretek</h3>
<div class="adaptiv-gombok">
<button class="adaptiv-gomb-1">Adaptív gomb</button>
<button class="adaptiv-gomb-2">Másik gomb</button>
<a href="#" class="adaptiv-link">Adaptív link</a>
</div>
<div class="adaptiv-navigacio">
<nav>
<ul class="adaptiv-nav-lista">
<li><a href="#" class="adaptiv-nav-link">Kezdőlap</a></li>
<li><a href="#" class="adaptiv-nav-link">Szolgáltatások</a></li>
<li><a href="#" class="adaptiv-nav-link">Kapcsolat</a></li>
</ul>
</nav>
</div>
<div class="adaptiv-ikon-sor">
<button class="adaptiv-ikon-gomb" aria-label="Keresés">🔍</button>
<button class="adaptiv-ikon-gomb" aria-label="Beállítások">⚙️</button>
<button class="adaptiv-ikon-gomb" aria-label="Profil">👤</button>
<button class="adaptiv-ikon-gomb" aria-label="Értesítések">🔔</button>
</div>
<div class="info-szoveg">
<p><strong>Működés:</strong></p>
<ul>
<li>🖱️ Egérrel (fine pointer): Alapértelmezett méretek</li>
<li>👆 Érintéssel (coarse pointer): Nagyobb méretek automatikusan</li>
<li>📱 Kis képernyő: Még nagyobb méretek jobb használhatóságért</li>
</ul>
</div>
</div>
<style>
.adaptiv-celpontok-container {
max-width: 700px;
margin: 20px auto;
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
}
/* Alapértelmezett méretek (fine pointer - egér, trackpad) */
.adaptiv-gomb-1, .adaptiv-gomb-2 {
background: #007bff;
color: white;
border: none;
border-radius: 4px;
padding: 8px 16px;
margin: 5px;
cursor: pointer;
font-size: 14px;
min-width: 24px;
min-height: 24px;
}
.adaptiv-link {
display: inline-block;
padding: 8px 16px;
margin: 5px;
background: #e7f3ff;
color: #0066cc;
text-decoration: none;
border-radius: 4px;
min-width: 24px;
min-height: 24px;
}
.adaptiv-nav-lista {
list-style: none;
padding: 0;
margin: 20px 0;
display: flex;
gap: 5px;
flex-wrap: wrap;
}
.adaptiv-nav-link {
display: block;
padding: 10px 15px;
background: #6c757d;
color: white;
text-decoration: none;
border-radius: 4px;
min-width: 24px;
min-height: 24px;
}
.adaptiv-ikon-sor {
display: flex;
gap: 10px;
margin: 20px 0;
flex-wrap: wrap;
}
.adaptiv-ikon-gomb {
background: #28a745;
color: white;
border: none;
border-radius: 50%;
width: 32px;
height: 32px;
cursor: pointer;
font-size: 16px;
display: flex;
align-items: center;
justify-content: center;
}
/* Érintőeszközök (coarse pointer) */
@media (pointer: coarse) {
.adaptiv-gomb-1, .adaptiv-gomb-2 {
padding: 12px 20px;
font-size: 16px;
min-width: 44px; /* Nagyobb érintőcélpont */
min-height: 44px;
}
.adaptiv-link {
padding: 12px 20px;
font-size: 16px;
min-width: 44px;
min-height: 44px;
}
.adaptiv-nav-link {
padding: 14px 18px;
font-size: 16px;
min-width: 44px;
min-height: 44px;
}
.adaptiv-ikon-gomb {
width: 48px; /* Nagyobb ikon gombok érintéshez */
height: 48px;
font-size: 20px;
}
}
/* Kis képernyők (mobil eszközök) */
@media (max-width: 768px) {
.adaptiv-gomb-1, .adaptiv-gomb-2 {
padding: 14px 24px;
font-size: 18px;
min-width: 48px; /* Még nagyobb mobil eszközökön */
min-height: 48px;
}
.adaptiv-link {
padding: 14px 24px;
font-size: 18px;
min-width: 48px;
min-height: 48px;
}
.adaptiv-nav-link {
padding: 16px 20px;
font-size: 18px;
min-width: 48px;
min-height: 48px;
}
.adaptiv-ikon-gomb {
width: 52px; /* Maximum méret kis képernyőkön */
height: 52px;
font-size: 22px;
}
.adaptiv-ikon-sor {
justify-content: center;
}
.adaptiv-nav-lista {
flex-direction: column;
align-items: center;
}
}
/* Hover és focus állapotok */
.adaptiv-gomb-1:hover, .adaptiv-gomb-2:hover {
background: #0056b3;
}
.adaptiv-gomb-1:focus, .adaptiv-gomb-2:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.adaptiv-link:hover {
background: #cce7ff;
text-decoration: underline;
}
.adaptiv-link:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.adaptiv-nav-link:hover {
background: #5a6268;
}
.adaptiv-nav-link:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.adaptiv-ikon-gomb:hover {
background: #218838;
}
.adaptiv-ikon-gomb:focus {
outline: 3px solid #ffbf47;
outline-offset: 2px;
}
.info-szoveg {
margin-top: 30px;
padding: 15px;
background: #e7f3ff;
border-radius: 6px;
border-left: 4px solid #0066cc;
}
.info-szoveg ul {
margin: 10px 0;
padding-left: 20px;
}
.info-szoveg li {
margin-bottom: 5px;
}
</style>
A CSS media query-k automatikusan nagyobb célpontokat biztosítanak érintőeszközökön és kis képernyőkön, ahol a pontosság kritikusabb.
Helytelen megoldások
Apró kattintási területek padding nélkül
<!-- Rossz: Túl kicsi kattintási területek -->
<div class="rossz-celpontok-container">
<h3>Túl kicsi célpontok (ROSSZ példák)</h3>
<div class="rossz-pelda">
<!-- Rossz: Túl kicsi X gomb -->
<a href="#" class="rossz-x-gomb">X</a>
<span class="hibajelzes">❌ Gyakran kevesebb mint 24×24px, nehéz eltalálni</span>
</div>
<div class="rossz-pelda">
<!-- Rossz: Ikon csak font-size-szal, padding nélkül -->
<button class="rossz-ikon-gomb">✕</button>
<span class="hibajelzes">❌ Vizuális méret kicsi, tényleges célpont még kisebb</span>
</div>
<div class="rossz-pelda">
<!-- Rossz: Kicsi checkbox és radio gombok -->
<label class="rossz-checkbox-label">
<input type="checkbox" class="rossz-checkbox">
Elfogadom
</label>
<span class="hibajelzes">❌ Alapértelmezett checkbox túl kicsi érintéshez</span>
</div>
<div class="rossz-pelda">
<!-- Rossz: Kicsi linkek lista formában -->
<ul class="rossz-linkek-lista">
<li><a href="#" class="rossz-lista-link">Link 1</a></li>
<li><a href="#" class="rossz-lista-link">Link 2</a></li>
<li><a href="#" class="rossz-lista-link">Link 3</a></li>
</ul>
<span class="hibajelzes">❌ Linkek túl közel egymáshoz, kis célpont</span>
</div>
</div>
<style>
.rossz-celpontok-container {
max-width: 600px;
margin: 20px auto;
padding: 20px;
background: #fff5f5;
border: 2px solid #dc3545;
border-radius: 8px;
}
.rossz-pelda {
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 20px;
padding: 15px;
background: white;
border-radius: 6px;
border: 1px solid #f5c6cb;
}
.hibajelzes {
color: #721c24;
font-size: 14px;
font-weight: 500;
flex: 1;
}
/* Rossz: Túl kicsi X gomb */
.rossz-x-gomb {
color: #dc3545;
text-decoration: none;
font-size: 16px;
font-weight: bold;
/* Nincs padding, nincs minimum méret */
/* Tényleges kattintási terület ~16x16px vagy kevesebb */
}
/* Rossz: Ikon gomb csak font-size-szal */
.rossz-ikon-gomb {
background: #dc3545;
color: white;
border: none;
cursor: pointer;
font-size: 16px;
/* Nincs padding, nincs width/height */
/* Célpont méret ismeretlen és valószínűleg kicsi */
}
/* Rossz: Kicsi checkbox */
.rossz-checkbox-label {
display: flex;
align-items: center;
gap: 5px;
font-size: 14px;
}
.rossz-checkbox {
/* Alapértelmezett böngésző méret, általában ~13x13px */
/* Túl kicsi érintőeszközökön */
}
/* Rossz: Kicsi linkek lista */
.rossz-linkek-lista {
list-style: none;
padding: 0;
margin: 0;
}
.rossz-linkek-lista li {
margin-bottom: 2px; /* Túl kis távolság */
}
.rossz-lista-link {
color: #007bff;
text-decoration: none;
font-size: 14px;
/* Nincs padding, nincs minimum méret */
/* Kattintási terület csak a szöveg mérete */
}
.rossz-lista-link:hover {
text-decoration: underline;
}
</style>
Probléma: Ezek az elemek nem érik el a 24×24 pixel minimum méretet, nehézzé téve a pontos kattintást vagy érintést, különösen mozgássérült felhasználók számára.
Átfedő kis célpontok véletlen aktiválást váltanak ki
<!-- Rossz: Átfedő kis gombok -->
<div class="atfedo-celpontok-container">
<h3>Átfedő kis célpontok (ROSSZ példák)</h3>
<div class="rossz-pelda">
<div class="atfedo-gombok-1">
<!-- Rossz: Túl közel egymáshoz, kis méretek -->
<button class="rossz-kis-gomb" style="position: absolute; left: 10px; top: 10px;">A</button>
<button class="rossz-kis-gomb" style="position: absolute; left: 25px; top: 10px;">B</button>
<button class="rossz-kis-gomb" style="position: absolute; left: 40px; top: 10px;">C</button>
</div>
<span class="hibajelzes">❌ 20×20px gombok 15px távolságra - átfedő célterületek</span>
</div>
<div class="rossz-pelda">
<div class="zsufolt-ikonok">
<!-- Rossz: Túl sok kis ikon egy helyen -->
<button class="rossz-ikon-kicsi">📝</button>
<button class="rossz-ikon-kicsi">🗑️</button>
<button class="rossz-ikon-kicsi">📤</button>
<button class="rossz-ikon-kicsi">⚙️</button>
<button class="rossz-ikon-kicsi">❤️</button>
</div>
<span class="hibajelzes">❌ Zsúfolt kis ikon gombok nehéz célzással</span>
</div>
<div class="rossz-pelda">
<div class="rossz-navigacio">
<!-- Rossz: Navigációs linkek túl közel -->
<a href="#" class="rossz-nav-link">Főoldal</a> |
<a href="#" class="rossz-nav-link">Termékek</a> |
<a href="#" class="rossz-nav-link">Szolgáltatások</a> |
<a href="#" class="rossz-nav-link">Kapcsolat</a>
</div>
<span class="hibajelzes">❌ Inline linkek elválasztó karakterekkel - kis célpontok</span>
</div>
<div class="rossz-pelda">
<div class="rossz-tabla-muveletek">
<!-- Rossz: Táblázat műveletek kis gombokkal -->
<table class="rossz-tabla">
<tr>
<td>Elem 1</td>
<td class="muveletek-oszlop">
<button class="rossz-tabla-gomb">📝</button>
<button class="rossz-tabla-gomb">👁️</button>
<button class="rossz-tabla-gomb">🗑️</button>
</td>
</tr>
<tr>
<td>Elem 2</td>
<td class="muveletek-oszlop">
<button class="rossz-tabla-gomb">📝</button>
<button class="rossz-tabla-gomb">👁️</button>
<button class="rossz-tabla-gomb">🗑️</button>
</td>
</tr>
</table>
</div>
<span class="hibajelzes">❌ Táblázat műveletek túl kicsi gombokkal</span>
</div>
</div>
<style>
.atfedo-celpontok-container {
max-width: 700px;
margin: 20px auto;
padding: 20px;
background: #fff5f5;
border: 2px solid #dc3545;
border-radius: 8px;
}
.rossz-pelda {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 25px;
padding: 20px;
background: white;
border-radius: 6px;
border: 1px solid #f5c6cb;
position: relative;
}
.atfedo-gombok-1 {
position: relative;
width: 80px;
height: 40px;
background: #f8f9fa;
border: 1px dashed #dc3545;
}
/* Rossz: Kis gombok túl közel */
.rossz-kis-gomb {
width: 20px;
height: 20px;
background: #dc3545;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 12px;
/* Átfedő pozíciók miatt véletlen kattintások */
}
/* Rossz: Zsúfolt ikonok */
.zsufolt-ikonok {
display: flex;
gap: 2px; /* Túl kicsi távolság */
}
.rossz-ikon-kicsi {
width: 18px;
height: 18px;
background: #6c757d;
color: white;
border: none;
border-radius: 2px;
cursor: pointer;
font-size: 10px;
/* Túl kicsi érintéshez */
}
/* Rossz: Navigációs linkek */
.rossz-navigacio {
font-size: 14px;
}
.rossz-nav-link {
color: #007bff;
text-decoration: none;
padding: 2px 4px; /* Túl kicsi padding */
/* Kattintási terület túl kicsi */
}
.rossz-nav-link:hover {
text-decoration: underline;
}
/* Rossz: Táblázat gombok */
.rossz-tabla {
border-collapse: collapse;
width: 100%;
}
.rossz-tabla td {
padding: 5px;
border: 1px solid #dee2e6;
}
.muveletek-oszlop {
text-align: center;
}
.rossz-tabla-gomb {
width: 16px;
height: 16px;
background: #6c757d;
color: white;
border: none;
border-radius: 2px;
cursor: pointer;
font-size: 8px;
margin: 0 1px;
/* Túl kicsi minden eszközön */
}
.hibajelzes {
color: #721c24;
font-size: 14px;
font-weight: 500;
flex: 1;
}
</style>
Probléma: Az átfedő vagy túl közeli kis célpontok véletlen aktiválásokat okoznak és megnehezítik a pontos interakciót, különösen érintőeszközökön.
Responsive hiány kis képernyőkön
<!-- Rossz: Nem adaptív célpontok -->
<div class="nem-adaptiv-container">
<h3>Nem adaptív célpontok (ROSSZ példák)</h3>
<div class="rossz-pelda">
<div class="fix-meretu-gombok">
<!-- Rossz: Fix kicsi méretek minden eszközön -->
<button class="fix-kicsi-gomb">Mentés</button>
<button class="fix-kicsi-gomb">Mégse</button>
<button class="fix-kicsi-gomb">Törlés</button>
</div>
<span class="hibajelzes">❌ Fix 20×20px méret minden eszközön - mobilon használhatatlan</span>
</div>
<div class="rossz-pelda">
<div class="egesz-ikon-sor">
<!-- Rossz: Képernyő mérettől függetlenül ugyanaz -->
<button class="nem-adaptiv-ikon">🏠</button>
<button class="nem-adaptiv-ikon">🔍</button>
<button class="nem-adaptiv-ikon">⚙️</button>
<button class="nem-adaptiv-ikon">❤️</button>
<button class="nem-adaptiv-ikon">📧</button>
<button class="nem-adaptiv-ikon">🔔</button>
</div>
<span class="hibajelzes">❌ Ikonok nem nőnek mobilon - túl kicsik érintéshez</span>
</div>
<div class="rossz-pelda">
<form class="nem-adaptiv-form">
<!-- Rossz: Űrlap elemek nem adaptívok -->
<input type="text" class="fix-input" placeholder="Név">
<input type="email" class="fix-input" placeholder="Email">
<button type="submit" class="fix-submit">Küldés</button>
</form>
<span class="hibajelzes">❌ Űrlap elemek nem növekednek mobilon</span>
</div>
<div class="rossz-pelda">
<div class="apro-vezerlok">
<!-- Rossz: Minuscule vezérlők mobilon -->
<div class="szam-bevitel">
<button class="apro-csokkento">-</button>
<span class="szam-kijelzo">5</span>
<button class="apro-novelo">+</button>
</div>
</div>
<span class="hibajelzes">❌ Szám vezérlők túl kicsik mobilon</span>
</div>
</div>
<style>
.nem-adaptiv-container {
max-width: 700px;
margin: 20px auto;
padding: 20px;
background: #fff5f5;
border: 2px solid #dc3545;
border-radius: 8px;
}
.rossz-pelda {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 25px;
padding: 20px;
background: white;
border-radius: 6px;
border: 1px solid #f5c6cb;
}
/* Rossz: Fix kicsi gombok */
.fix-meretu-gombok {
display: flex;
gap: 5px;
}
.fix-kicsi-gomb {
width: 20px; /* Fix kicsi méret */
height: 20px; /* Fix kicsi méret */
background: #6c757d;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 10px;
/* Nincs @media query, nincs adaptivitás */
/* Mobilon használhatatlan */
}
/* Rossz: Nem adaptív ikonok */
.egesz-ikon-sor {
display: flex;
gap: 8px;
}
.nem-adaptiv-ikon {
width: 22px; /* Fix méret */
height: 22px; /* Fix méret */
background: #17a2b8;
color: white;
border: none;
border-radius: 50%;
cursor: pointer;
font-size: 12px;
/* Mobilon és érintőeszközökön túl kicsi */
}
/* Rossz: Nem adaptív űrlap */
.nem-adaptiv-form {
display: flex;
gap: 5px;
align-items: center;
}
.fix-input {
width: 80px; /* Fix keskeny */
height: 20px; /* Fix alacsony */
padding: 2px 4px; /* Kicsi padding */
border: 1px solid #ced4da;
border-radius: 3px;
font-size: 12px;
/* Mobilon nehéz használni */
}
.fix-submit {
width: 40px; /* Fix kicsi */
height: 24px; /* Fix kicsi */
background: #dc3545;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 10px;
/* Mobilon eltalálhatatlan */
}
/* Rossz: Apró szám vezérlők */
.szam-bevitel {
display: flex;
align-items: center;
gap: 5px;
}
.apro-csokkento, .apro-novelo {
width: 16px; /* Nagyon kicsi */
height: 16px; /* Nagyon kicsi */
background: #ffc107;
color: #212529;
border: none;
border-radius: 2px;
cursor: pointer;
font-size: 10px;
font-weight: bold;
/* Mobilon szinte használhatatlan */
}
.szam-kijelzo {
padding: 2px 8px;
background: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 3px;
font-size: 12px;
min-width: 20px;
text-align: center;
}
.hibajelzes {
color: #721c24;
font-size: 14px;
font-weight: 500;
flex: 1;
}
/* Nincs @media (pointer: coarse) - ez a probléma! */
/* Nincs @media (max-width: ...) - ez is probléma! */
/* A célpontok sosem növekednek mobilon vagy érintőeszközökön */
</style>
Probléma: A fix kicsi méretű interaktív mutató célpontok minden eszközön ugyanakkorák maradnak, amelyek így mobileszközökön és érintőeszközökön használhatatlanul kicsik lesznek.
Források
Iratkozz fel hírlevelünkre!
Amennyiben szeretnél első kézből értesülni az új bejegyzésekről, iratkozz fel hírlevelünkre!