Fonctions de dimensionnement CSS : calc(), min(), max(), clamp() et unités viewport

Labo des fonctions de dimensionnement CSS

CSS calc(), min(), max(), clamp(), vh vs dvh, fit-content | We.Inc

Faites glisser un curseur de largeur de viewport et voyez calc(), min(), max() et clamp() se résoudre en pixels. Plus vh face à svh, lvh et dvh, fit-content et min-content en direct, gap, et des recettes de typographie fluide.

Les fonctions mathématiques CSS permettent à une valeur de s'adapter à l'écran. calc() mélange les unités, comme dans calc(100% - 2rem). min() retient la plus petite option, donc width: min(100%, 640px) ne déborde jamais. max() retient la plus grande, et clamp(min, preferred, max) maintient une valeur fluide entre deux limites. dvh suit la barre d'outils changeante du navigateur mobile, contrairement à vh.

Quelle fonction pour quel usage

Au lieu de redimensionner votre navigateur pour tester une formule, faites glisser la largeur de viewport simulée et chaque fonction se résout en pixels sous vos yeux, avec le point où clamp() atteint ses limites. La page montre aussi ce que mesurent vh, svh, lvh et dvh sur un téléphone, et les mots-clés intrinsèques à l'œuvre sur de vraies boîtes.

Questions fréquentes

Quelle est la différence entre vh, svh, lvh et dvh ?

Sur téléphone, la barre d'outils du navigateur s'agrandit et se réduit. svh vaut 1% du petit viewport, barre d'outils affichée. lvh vaut 1% du grand viewport, barre masquée. dvh suit celui qui est actif et se met à jour pendant le défilement. Le vh classique équivaut généralement à lvh, c'est pourquoi les sections en 100vh sont coupées sur mobile.

clamp(), min() et max() sont-elles prises en charge partout ?

Oui, les trois fonctionnent dans tous les grands navigateurs depuis 2020. Les unités de viewport petit, grand et dynamique sont arrivées plus tard, en 2022, et sont désormais présentes dans tous les grands navigateurs actuels. Ajoutez une ligne de repli en vh simple avant elles si vous prenez encore en charge des appareils plus anciens.

Comment écrire une taille de police fluide avec clamp() ?

Choisissez la taille sur un écran étroit et sur un écran large, puis écrivez clamp(small, preferred, large). La valeur préférée combine rem et vw, par exemple 1rem + 2vw, pour que la taille grandisse avec la fenêtre tout en restant entre les deux limites. Le labo ci-dessous montre les largeurs exactes où les limites prennent le relais.

Que fait fit-content ?

width: fit-content dimensionne une boîte selon son contenu, comme un inline-block ajusté, mais jamais plus large que l'espace disponible. Cela équivaut à min(max-content, max(min-content, available space)). La fonction fit-content() dans les pistes de grid fait la même chose avec une limite que vous choisissez.

Peut-on utiliser gap avec flexbox ?

Oui. gap, row-gap et column-gap fonctionnent dans les conteneurs flex de tous les navigateurs actuels, pas seulement en grid. L'espacement n'est ajouté qu'entre les éléments, jamais sur les bords extérieurs, ce qui est plus simple que des marges sur chaque enfant.

Comment calc() se résout

Tailles intrinsèques : min-content, max-content et fit-content

Un espacement fluide en plus d'une typographie fluide

vh face à svh, lvh et dvh

Unités en pourcentage du viewport

Un hero pleine hauteur sûr sur mobile

La première ligne sert de repli pour les navigateurs sans les nouvelles unités. La seconde la remplace là où elles sont prises en charge.

Exemples de calc(), min(), max() et clamp()

Une colonne lisible sans media query

min() plafonne la largeur ; le padding utilise max() pour ne jamais descendre sous 12px. Les deux règles s'adaptent seules à la largeur du cadre.

calc() pour une barre latérale fixe à côté d'une zone principale fluide

La zone principale prend tout ce qui reste après la barre latérale de 120px et l'espacement de 12px.

min-content, max-content et fit-content

Mots-clés de dimensionnement intrinsèque

gap en flex et en grid

Le même gap dans une rangée flex qui passe à la ligne et dans une grid

row-gap et column-gap peuvent différer. Aucun des deux n'ajoute d'espace sur les bords extérieurs.

Échelle fluide de typographie et d'espacement

Une petite échelle fluide en propriétés personnalisées

Chaque palier grandit entre un téléphone d'environ 360px et un écran de bureau de 1280px. Ajustez les valeurs dans le labo ci-dessus.

Labo du viewport

Largeur de viewport simulée (px)

Titre fluide à {px}px

Valeurs résolues à la largeur simulée

Fonction

Déclaration

À {vp}px

minimum de clamp (rem)

maximum de clamp (rem)

préférée : partie rem

préférée : partie vw

Le maximum est inférieur au minimum, donc le minimum l'emporte à toutes les largeurs.

Reste à {min}rem jusqu'à environ {from}px de large, grandit jusqu'à environ {to}px, puis se maintient à {max}rem.

Sans partie vw, la valeur ne change jamais avec la fenêtre.

Copier

Ce que couvrent 100 unités de chaque type sur un téléphone

Trois téléphones : 100svh remplit l'espace entre les barres d'outils visibles, 100lvh remplit tout l'écran comme si les barres étaient masquées, 100dvh suit les barres d'outils quand elles changent

barres affichées

barres masquées

suit les barres

Les bandes grises sont les barres d'outils du navigateur. Le bleu est la zone que remplissent 100 unités.

Dimensionnement selon le contenu, en direct

Mot-clé de largeur

Espace disponible (px)

Livraison gratuite sur toutes les commandes ce week-end

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site