Documentation - Unités.
Découvrez Marssel : un framework CSS intelligent, configuration minimale, conçu pour des interfaces rapides et une expérience développeur simplifiée.
Démarrage
Concepts de base
Utilitaires
Unités
Marssel supporte toutes les unités CSS standard pour définir les dimensions, espacements, tailles de police et autres propriétés. Comprendre quand utiliser chaque unité est essentiel pour créer des designs responsive et maintenables. Ce guide présente les différentes unités disponibles, leurs cas d'usage et des exemples pratiques.
Pixels (px)
Les pixels sont des unités absolues, idéales pour des dimensions fixes et précises :
Texte en 16px
Texte en 24px
<!-- Dimensions en pixels -->
<div class="w-[200px] h-[100px] bg-[0B63F3] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
200px × 100px
</div>
<!-- Espacement en pixels -->
<div class="p-[20px] m-[10px] bg-[e0e0e0]">
Padding 20px, Margin 10px
</div>
<!-- Taille de police en pixels -->
<p class="font-size-[16px] mb-[10px]">Texte en 16px</p>
<p class="font-size-[24px]">Texte en 24px</p>
Quand utiliser px
<!-- Bordures (toujours en px) -->
<div class="border-[2px_solid_ccc] p-[20px] mb-[10px]">
Bordure 2px
</div>
<!-- Ombres -->
<div class="shadow-[0_4px_8px_rgba(0,0,0,0.1)] p-[20px] bg-[fff]">
Ombre avec pixels
</div>
<!-- Dimensions fixes d'éléments UI -->
<button class="w-[120px] h-[40px] bg-[0B63F3] c-[fff] rounded-[4px] border-[none]">
Button 120px
</button>
Pourcentage (%)
Les pourcentages sont relatifs à l'élément parent, parfaits pour les layouts fluides :
<!-- Largeurs en pourcentage -->
<div class="bg-[f5f5f5] p-[10px]">
<div class="w-[25%] h-[60px] bg-[0B63F3] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
25% de largeur
</div>
<div class="w-[50%] h-[60px] bg-[8b5cf6] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
50% de largeur
</div>
<div class="w-[75%] h-[60px] bg-[10b981] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
75% de largeur
</div>
<div class="w-[100%] h-[60px] bg-[D41212] c-[fff] d-[flex] items-[center] justify-[center]">
100% de largeur
</div>
</div>
Grid avec pourcentages
<!-- Layout en colonnes -->
<div class="d-[flex] gap-[2%] bg-[f5f5f5] p-[10px]">
<div class="w-[33.33%] h-[100px] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center]">
33.33%
</div>
<div class="w-[33.33%] h-[100px] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center]">
33.33%
</div>
<div class="w-[33.33%] h-[100px] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center]">
33.33%
</div>
</div>
Hauteur en pourcentage
<!-- Parent avec hauteur définie -->
<div class="h-[300px] bg-[f5f5f5] p-[10px] d-[flex] gap-[10px]">
<div class="w-[100px] h-[50%] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center]">
50%
</div>
<div class="w-[100px] h-[75%] bg-[8b5cf6] c-[fff] d-[flex] items-[center] justify-[center]">
75%
</div>
<div class="w-[100px] h-[100%] bg-[10b981] c-[fff] d-[flex] items-[center] justify-[center]">
100%
</div>
</div>
REM (Root EM)
REM est relatif à la taille de police de l'élément racine (html), excellent pour la scalabilité :
Texte 1rem (base)
Texte 1.25rem
Texte 1.5rem
Texte 2rem
<!-- Dimensions en rem -->
<div class="w-[20rem] h-[5rem] bg-[0B63F3] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
20rem × 5rem
</div>
<!-- Espacements en rem -->
<div class="p-[2rem] m-[1rem] bg-[e0e0e0]">
Padding 2rem, Margin 1rem
</div>
<!-- Tailles de police en rem (recommandé) -->
<p class="font-size-[1rem] mb-[10px]">Texte 1rem (base)</p>
<p class="font-size-[1.25rem] mb-[10px]">Texte 1.25rem</p>
<p class="font-size-[1.5rem] mb-[10px]">Texte 1.5rem</p>
<p class="font-size-[2rem]">Texte 2rem</p>
Système d'espacement cohérent en rem
<!-- Espacements cohérents -->
<div class="mb-[1rem] p-[1rem] bg-[f5f5f5] rounded-[0.5rem]">
Espacement 1rem
</div>
<div class="mb-[1.5rem] p-[1.5rem] bg-[f5f5f5] rounded-[0.5rem]">
Espacement 1.5rem
</div>
<div class="mb-[2rem] p-[2rem] bg-[f5f5f5] rounded-[0.5rem]">
Espacement 2rem
</div>
Comparaison px vs rem
Titre 18px
Texte en pixels fixes
Titre 1.125rem
Texte en rem (scalable)
<div class="d-[flex] gap-[20px]">
<!-- Pixels (ne scale pas) -->
<div class="w-[300px] bg-[e0e0e0] p-[20px]">
<h4 class="font-size-[18px] m-[0] mb-[10px]">Titre 18px</h4>
<p class="font-size-[14px] m-[0]">Texte en pixels fixes</p>
</div>
<!-- REM (scale avec la police root) -->
<div class="w-[20rem] bg-[e0e0e0] p-[1.25rem]">
<h4 class="font-size-[1.125rem] m-[0] mb-[0.625rem]">Titre 1.125rem</h4>
<p class="font-size-[0.875rem] m-[0]">Texte en rem (scalable)</p>
</div>
</div>
EM
EM est relatif à la taille de police de l'élément parent, utile pour des espacements contextuels :
Parent: 20px
<!-- EM relatif au parent -->
<div class="font-size-[20px] bg-[f5f5f5] p-[20px]">
<p class="font-size-[16px] mb-[10px]">Parent: 20px</p>
<div class="font-size-[1em] mb-[10px]">
1em = 20px (même taille que parent)
</div>
<div class="font-size-[1.5em] mb-[10px]">
1.5em = 30px (1.5 × 20px)
</div>
<div class="font-size-[0.75em]">
0.75em = 15px (0.75 × 20px)
</div>
</div>
Espacement en em
<!-- Padding proportionnel à la taille de police -->
<button class="font-size-[14px] p-[0.5em_1em] bg-[0B63F3] c-[fff] border-[none] rounded-[0.25em] mb-[10px]">
Petit bouton (14px)
</button>
<button class="font-size-[16px] p-[0.5em_1em] bg-[0B63F3] c-[fff] border-[none] rounded-[0.25em] mb-[10px]">
Bouton moyen (16px)
</button>
<button class="font-size-[20px] p-[0.5em_1em] bg-[0B63F3] c-[fff] border-[none] rounded-[0.25em]">
Grand bouton (20px)
</button>
VW (Viewport Width)
Pourcentage de la largeur du viewport :
<!-- Largeur relative au viewport -->
<div class="w-[50vw] h-[100px] bg-[0B63F3] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
50vw (50% de l'écran)
</div>
<div class="w-[75vw] h-[100px] bg-[8b5cf6] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
75vw (75% de l'écran)
</div>
<div class="w-[100vw] h-[100px] bg-[10b981] c-[fff] d-[flex] items-[center] justify-[center]">
100vw (pleine largeur)
</div>
VH (Viewport Height)
Pourcentage de la hauteur du viewport :
<div class="w-[100%] h-[50vh] bg-[0B63F3] c-[fff] mb-[10px] d-[flex] items-[center] justify-[center]">
50vh (50% de hauteur d'écran)
</div>
<div class="w-[100%] h-[100vh] bg-[8b5cf6] c-[fff] d-[flex] items-[center] justify-[center]">
100vh (pleine hauteur d'écran)
</div>
Hero section full-screen
Hero Section
100vw × 100vh
<!-- Section plein écran -->
<div class="w-[100vw] h-[100vh] bg-linear-[135deg,667eea_0%,764ba2_100%] c-[fff] d-[flex] flex-direction-[column] items-[center] justify-[center]">
<h1 class="font-size-[4rem] m-[0] mb-[1rem]">Hero Section</h1>
<p class="font-size-[1.5rem] m-[0]">100vw × 100vh</p>
</div>
Taille de police responsive avec vw
Titre responsive (5vw)
Texte qui s'adapte à la largeur de l'écran (2vw)
Titre avec base 1rem + 2vw
<!-- Texte qui scale avec la largeur -->
<h1 class="font-size-[5vw] c-[333]">
Titre responsive (5vw)
</h1>
<p class="font-size-[2vw] c-[666]">
Texte qui s'adapte à la largeur de l'écran (2vw)
</p>
<!-- Avec limites min/max -->
<h2 class="font-size-[calc[1rem_+_2vw]] c-[333]">
Titre avec base 1rem + 2vw
</h2>
VMIN et VMAX
<!-- VMIN : plus petite dimension du viewport -->
<div class="w-[50vmin] h-[50vmin] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center] mb-[10px]">
50vmin (carré qui s'adapte)
</div>
<!-- VMAX : plus grande dimension du viewport -->
<div class="w-[30vmax] h-[100px] bg-[10b981] c-[fff] d-[flex] items-[center] justify-[center]">
30vmax
</div>
Notation des décimales
En Marssel, utilisez le . pour les valeurs décimales.
font-size-[1.25rem] line-h-[1.6]
<div class="opacity-[0.5] bg-[000] c-[fff] p-[20px] mb-[10px]">
opacity-[0.5] = 0.5
</div>
<div class="w-[12.5rem] h-[60px] bg-[0B63F3] c-[fff] d-[flex] items-[center] justify-[center] mb-[10px]">
w-[12.5rem] = 12.5rem
</div>
<p class="font-size-[1.25rem] line-h-[1.6]">
font-size-[1.25rem] line-h-[1.6]
</p>
<div class="transform-[scale(1.1)] bg-[e0e0e0] p-[20px]">
transform-[scale(1.1)] = scale(1.1)
</div>