Skip to main content

Hitbox

Hitbox utvider det klikkbare arealet til et element uten å påvirke layout. Nyttig for å oppfylle WCAG 2.5.5 (44×44 px minimum touch target) på små ikonknapper, lenker og andre klikkbare elementer der visuell størrelse er satt av designet.

Teknikken bruker ::before-pseudo-elementet til å utvide det interaktive arealet. Elementet selv beholder sin visuelle størrelse og layout-påvirkning. Inspirert av bazza.dev/craft/2026/hit-area.

Klasser

.ix-hitbox er basisklassen og må alltid brukes. Legg til én eller flere størrelsesklasser for å kontrollere utvidelsen i de retningene du trenger.

Basisklasse

CSS-klasseBeskrivelse
.ix-hitboxSetter position: relative og aktiverer ::before-pseudo-elementet. Alltid påkrevd.

Uniform utvidelse (alle sider)

CSS-klasseUtvidelse (alle sider)
.ix-hitbox-2xsvar(--ix-spacing-2xs)
.ix-hitbox-xsvar(--ix-spacing-xs)
.ix-hitbox-smvar(--ix-spacing-sm)
.ix-hitbox-mdvar(--ix-spacing-md)
.ix-hitbox-lgvar(--ix-spacing-lg)
.ix-hitbox-xlvar(--ix-spacing-xl)
.ix-hitbox-2xlvar(--ix-spacing-2xl)

X-akse (venstre + høyre)

CSS-klasseUtvidelse (venstre + høyre)
.ix-hitbox-x-2xsvar(--ix-spacing-2xs)
.ix-hitbox-x-xsvar(--ix-spacing-xs)
.ix-hitbox-x-smvar(--ix-spacing-sm)
.ix-hitbox-x-mdvar(--ix-spacing-md)
.ix-hitbox-x-lgvar(--ix-spacing-lg)
.ix-hitbox-x-xlvar(--ix-spacing-xl)
.ix-hitbox-x-2xlvar(--ix-spacing-2xl)

Y-akse (topp + bunn)

CSS-klasseUtvidelse (topp + bunn)
.ix-hitbox-y-2xsvar(--ix-spacing-2xs)
.ix-hitbox-y-xsvar(--ix-spacing-xs)
.ix-hitbox-y-smvar(--ix-spacing-sm)
.ix-hitbox-y-mdvar(--ix-spacing-md)
.ix-hitbox-y-lgvar(--ix-spacing-lg)
.ix-hitbox-y-xlvar(--ix-spacing-xl)
.ix-hitbox-y-2xlvar(--ix-spacing-2xl)

Individuelle sider

CSS-klasseUtvidelse
.ix-hitbox-t-2xsTopp: var(--ix-spacing-2xs)
.ix-hitbox-t-xsTopp: var(--ix-spacing-xs)
.ix-hitbox-t-smTopp: var(--ix-spacing-sm)
.ix-hitbox-t-mdTopp: var(--ix-spacing-md)
.ix-hitbox-t-lgTopp: var(--ix-spacing-lg)
.ix-hitbox-t-xlTopp: var(--ix-spacing-xl)
.ix-hitbox-t-2xlTopp: var(--ix-spacing-2xl)
.ix-hitbox-r-2xsHøyre: var(--ix-spacing-2xs)
.ix-hitbox-r-xsHøyre: var(--ix-spacing-xs)
.ix-hitbox-r-smHøyre: var(--ix-spacing-sm)
.ix-hitbox-r-mdHøyre: var(--ix-spacing-md)
.ix-hitbox-r-lgHøyre: var(--ix-spacing-lg)
.ix-hitbox-r-xlHøyre: var(--ix-spacing-xl)
.ix-hitbox-r-2xlHøyre: var(--ix-spacing-2xl)
.ix-hitbox-b-2xsBunn: var(--ix-spacing-2xs)
.ix-hitbox-b-xsBunn: var(--ix-spacing-xs)
.ix-hitbox-b-smBunn: var(--ix-spacing-sm)
.ix-hitbox-b-mdBunn: var(--ix-spacing-md)
.ix-hitbox-b-lgBunn: var(--ix-spacing-lg)
.ix-hitbox-b-xlBunn: var(--ix-spacing-xl)
.ix-hitbox-b-2xlBunn: var(--ix-spacing-2xl)
.ix-hitbox-l-2xsVenstre: var(--ix-spacing-2xs)
.ix-hitbox-l-xsVenstre: var(--ix-spacing-xs)
.ix-hitbox-l-smVenstre: var(--ix-spacing-sm)
.ix-hitbox-l-mdVenstre: var(--ix-spacing-md)
.ix-hitbox-l-lgVenstre: var(--ix-spacing-lg)
.ix-hitbox-l-xlVenstre: var(--ix-spacing-xl)
.ix-hitbox-l-2xlVenstre: var(--ix-spacing-2xl)

CSS-egenskaper

Størrelsesklassene setter interne CSS-variabler som basisklassen bruker. Du kan overstyre disse direkte hvis du trenger en egendefinert størrelse:

CSS-variabelKontrollererStandard
--ii-hit-tTopp-utvidelse0px
--ii-hit-rHøyre-utvidelse0px
--ii-hit-bBunn-utvidelse0px
--ii-hit-lVenstre-utvidelse0px
/* Egendefinert hitbox-størrelse */
.min-knapp {
--ii-hit-t: 12px;
--ii-hit-b: 12px;
}

Eksempler

Uniform utvidelse

Legg merke til at den visuelle størrelsen er uendret — bare det klikkbare arealet vokser.

Result
Loading...
Kode
Live Editor
<div class="hb-demo">
    <div class="ix-hitbox ix-hitbox-2xs ix-hitbox-debug">2xs</div>
    <div class="ix-hitbox ix-hitbox-xs ix-hitbox-debug">xs</div>
    <div class="ix-hitbox ix-hitbox-sm ix-hitbox-debug">sm</div>
    <div class="ix-hitbox ix-hitbox-md ix-hitbox-debug">md</div>
    <div class="ix-hitbox ix-hitbox-lg ix-hitbox-debug">lg</div>
</div>

X-akse

Nyttig for lenker og knapper i navigasjon der du vil utvide klikkbart areal horisontalt uten å påvirke linjehøyden.

Result
Loading...
Kode
Live Editor
<div class="hb-demo">
    <div class="ix-hitbox ix-hitbox-x-sm ix-hitbox-debug">x-sm</div>
    <div class="ix-hitbox ix-hitbox-x-md ix-hitbox-debug">x-md</div>
    <div class="ix-hitbox ix-hitbox-x-lg ix-hitbox-debug">x-lg</div>
</div>

Y-akse

Nyttig for ikoner og kompakte verktøylinjeknapper der du vil utvide treffarealet opp og ned.

Result
Loading...
Kode
Live Editor
<div class="hb-demo">
    <div class="ix-hitbox ix-hitbox-y-sm ix-hitbox-debug">y-sm</div>
    <div class="ix-hitbox ix-hitbox-y-md ix-hitbox-debug">y-md</div>
    <div class="ix-hitbox ix-hitbox-y-lg ix-hitbox-debug">y-lg</div>
</div>

Individuelle sider

Nyttig for elementer som sitter langs en kant og bare trenger utvidelse innover — for eksempel en lukk-knapp i et hjørne.

Result
Loading...
Kode
Live Editor
<div class="hb-demo">
    <div class="ix-hitbox ix-hitbox-t-lg ix-hitbox-debug">t-lg</div>
    <div class="ix-hitbox ix-hitbox-r-lg ix-hitbox-debug">r-lg</div>
    <div class="ix-hitbox ix-hitbox-b-lg ix-hitbox-debug">b-lg</div>
    <div class="ix-hitbox ix-hitbox-l-lg ix-hitbox-debug">l-lg</div>
</div>

Kombiner akseklasser

Bruk x- og y-akseklassene sammen for asymmetrisk utvidelse.

Result
Loading...
Kode
Live Editor
<div class="hb-demo">
    <div class="ix-hitbox ix-hitbox-x-lg ix-hitbox-y-2xs ix-hitbox-debug">x-lg y-2xs</div>
    <div class="ix-hitbox ix-hitbox-x-2xs ix-hitbox-y-lg ix-hitbox-debug">x-2xs y-lg</div>
</div>

Debug

To klasser gjør det enklere å visualisere hitbox-arealet under utvikling. Fjern dem før produksjon.

CSS-klasseBeskrivelse
.ix-hitbox-debugViser alltid hitbox-arealet med blå ramme og bakgrunn. Bytter til grønt ved hover.
.ix-hitbox-debug-hoverViser bare hitbox-arealet ved hover, med grønn ramme og bakgrunn. Brukes for å bekrefte at arealet er riktig uten å forstyrre det visuelle designet.

Fargesignalene er de samme som i originalen fra bazza.dev: blå = «her er hitbox-arealet», grønt = «hover aktiv, treffer du innenfor?».

Eksempel

Result
Loading...
Kode
Live Editor
<div class="ix-flex ix-gap-xl ix-p-xl ix-items-center">
    <button class="ix-button ix-hitbox ix-hitbox-sm ix-hitbox-debug" data-variant="tertiary" data-size="sm">
        Debug alltid
    </button>
    <button class="ix-button ix-hitbox ix-hitbox-sm ix-hitbox-debug-hover" data-variant="tertiary" data-size="sm">
        Debug ved hover
    </button>
</div>

Tilgjengelighet

Hitbox bruker ::before-pseudo-elementet til å utvide det klikkbare arealet. Pseudo-elementet legges over nærliggende innhold hvis elementet ikke er plassert i en beholder med overflow: hidden eller clip-path. Sørg for at hitbox-arealet ikke overlapper andre klikkbare elementer ved å gi tilstrekkelig mellomrom mellom dem.

Klassen setter automatisk position: relative på elementet via .ix-hitbox. Ikke fjern dette — uten position: relative vil ::before posisjonere seg mot nærmeste posisjonerte forfar.