Levitation
Shadow-schaal voor elevatie. Hoe hoger de stap, hoe sterker de visuele 'lift' van de canvas.
Why levitation?
Shadows communiceren hiërarchie en materiële metaforen: een element met een shadow zit visueel boven de canvas in een z-as die de gebruiker instinctief leest (Material Design elevation as z-axis
; Apple HIG depth conveys hierarchy
). De schaal hier gebruikt een verdubbelings-progressie (2×) voor y-offset en blur — dit matcht hoe licht in de fysieke wereld afvalt en zorgt dat elke stap perceptueel duidelijk groter is dan z'n voorganger zonder dat tussenstappen nodig zijn.
Elke shadow is opgebouwd uit twee lagen: een key shadow (scherp, directioneel, simuleert een primary light source) en een ambient shadow (zacht, diffuus, simuleert reflected light). De combinatie geeft realisme zonder de "stamp"-look van een enkele drop-shadow met grote blur.
Gebruik
@use "@ftp/style-library/scss/mixins/levitation" as *;
.my-card {
@include levitate("s");
}
.my-modal {
@include levitate("l");
}Shadow levels — preview + rationale
- Hover states, subtle depth
- Cards, buttons
- Dropdowns, popovers
- Modals, dialogs
- Toasts, high elevation
Accessibility
Shadow is decoratief. Visuele hiërarchie mag nooit afhankelijk zijn van shadow alleen — gebruikers met low-contrast displays, high-contrast OS-modes, of beperkt zicht missen subtiele drop-shadows. Analoog aan WCAG 1.4.1 Use of Color moet "iets staat bovenop iets anders" altijd door een tweede signaal versterkt worden: een border, een grotere afstand, een size-shift, of een expliciete state.
In high-contrast themes wordt de shadow-intensiteit gereduceerd of vervangen door een border — zie de HC Solar Light / HC Solar Dark themes voor de aanpassing.