| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/CSS/Reference/Values/clamp | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
clamp()Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2020.
La fonction CSS clamp() permet de ramener (d'crter) une valeur entre deux bornes infrieure et suprieure. La fonction utilise trois paramtres : une valeur minimale, une valeur prfre et une valeur maximale autorise.
font-size: clamp(1rem, 2.5vw, 2rem);
font-size: clamp(1.5rem, 2.5vw, 4rem);
font-size: clamp(1rem, 10vw, 2rem);
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
La taille de la police de ce texte varie en fonction de la taille de la
police de base de la page, et de la taille de la fentre.
</div>
</section>
Notez que l'utilisation de clamp() pour les tailles de police, comme dans ces exemples, permet de dfinir une taille de police qui augmente avec la taille de la fentre, mais qui ne descend pas en dessous d'une taille de police minimale ni ne dpasse une taille de police maximale. Cela a le mme effet que le code dans la typographie fluide (angl.) mais en une seule ligne, et sans utiliser de media queries.
/* Valeurs statiques */
width: clamp(200px, 40%, 400px);
width: clamp(20rem, 30vw, 70rem);
width: clamp(10vw, 20em, 100vw);
/* Valeurs calcules */
width: clamp(min(10vw, 20rem), 300px, max(90vw, 55rem));
width: clamp(100px, calc(30% / 2rem + 10px), 900px);
La fonction clamp(min, val, max) accepte trois expressions spares par des virgules comme paramtres.
minLa valeur minimale est la plus petite (la plus ngative) valeur. Il s'agit de la limite infrieure dans la plage des valeurs autorises. Si la valeur prfre est infrieure cette valeur, la valeur minimale est utilise.
valLa valeur prfre est l'expression dont la valeur est utilise tant que le rsultat se situe entre les valeurs minimale et maximale.
maxLa valeur maximale est la plus grande (la plus positive) expression laquelle la valeur de la proprit est attribue si la valeur prfre est suprieure cette limite suprieure.
Les expressions peuvent tre des fonctions mathmatiques (voir calc() pour plus d'informations), des valeurs littrales, d'autres expressions qui valuent un type d'argument valide (comme <length>), ou des fonctions min() et max() imbriques. Pour les expressions mathmatiques, vous pouvez utiliser l'addition, la soustraction, la multiplication et la division sans utiliser la fonction calc() elle-mme. Vous pouvez galement utiliser des parenthses pour tablir l'ordre des calculs si ncessaire.
Vous pouvez utiliser diffrentes units pour chaque valeur dans vos expressions et diffrentes units dans toute fonction mathmatique composant l'un des arguments.
Gardez l'esprit les aspects suivants lors de l'utilisation de la fonction :
auto avait t dfini.max() et min() en tant que valeurs d'expression, auquel cas les fonctions internes sont traites comme des parenthses de base. Les expressions sont des expressions mathmatiques compltes, vous pouvez donc utiliser l'addition, la soustraction, la multiplication et la division directement sans utiliser la fonction calc() elle-mme.+ ), de soustraction ( - ), de multiplication ( * ) et de division ( / ), en utilisant les rgles de priorit des oprateurs standard. Assurez-vous de mettre un espace de chaque ct des oprandes + et -. Vous pouvez utiliser diffrentes units pour chaque valeur dans votre expression. Vous pouvez galement utiliser des parenthses pour tablir l'ordre des calculs si ncessaire.min() et max() dans une fonction clamp().clamp(MIN, VAL, MAX) est rsolu comme max(MIN, min(VAL, MAX)).
En fonction des paramtres fournis, la fonction retourne <length>, <frequency>, <angle>, <time>, <percentage>, <number> ou <integer>.
<clamp()> =Cette syntaxe reflte le dernier standard selon CSS Values and Units Module Level 4. Tous les navigateurs n'ont peut-tre pas implment toutes les parties. Voir la Compatibilit des navigateurs pour plus d'informations sur la prise en charge.
clamp( [ <calc-sum> | none ] , <calc-sum> , [ <calc-sum> | none ] )
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
Lorsque clamp() est utilis pour contrler la taille du texte, assurez-vous que la valeur maximale autorise est une unit de longueur relative qui n'est pas infrieure deux fois la valeur minimale autorise, par exemple
font-size: clamp(1rem, 2.5vw, 2rem);
Cela permet de s'assurer que la taille du texte peut augmenter d'au moins 200 % si la page est zoome.
min(), max() et clamp()Dans cet exemple, nous avons une page web qui utilise min(), max(), et clamp() pour dfinir des tailles de manire ractive.
L'exemple ajuste les tailles des lments de la page de trois manires :
Dans les trois cas, la page utilise une combinaison d'units relatives la fentre (vw et <percentage>), pour dfinir une taille qui varie en fonction de la largeur de la fentre, et d'une valeur qui n'est pas relative la fentre (rem et px) pour mettre en uvre des tailles minimales et/ou maximales.
L'exemple est disponible l'adresse https://mdn.github.io/css-examples/min-max-clamp/. Ouvrez-le dans une nouvelle fentre et essayez d'ajuster la largeur de la fentre.
La longueur des lignes (contrle par la width de l'lment HTML <body>) augmente mesure que la largeur de la fentre augmente, mais seulement jusqu' un certain point (1000px), et au-del de ce point, elle n'augmente plus. Nous utilisons min() pour dfinir une longueur de ligne maximale : elle peut tre infrieure 1000px, mais ne dpasse pas cette valeur. Cela est utile, car les lignes longues sont plus difficiles lire, donc nous voulons souvent limiter la longueur d'une ligne. Pour y parvenir, nous utilisons min(1000px, calc(70% + 100px)) : lorsque le rsultat du calcul bas sur le pourcentage dpasse 1000px, nous passons la valeur fixe de 1000px.
La taille de la police des paragraphes (contrle par la font-size de l'lment HTML <p>) diminue mesure que la fentre se rtrcit, mais seulement jusqu' un certain point, et au-del de ce point (le point o 1.2vw est infrieur 1.2rem), elle ne diminue plus : elle reste 1.2rem. Nous utilisons max() pour dfinir une taille de police minimale : la police peut dpasser 1.2rem mais ne descend jamais en dessous. Cela est utile, car un texte vraiment petit est difficile lire. Pour y parvenir, nous utilisons max(1.2rem, 1.2vw). Cela signifie que la font-size est dfinie 1.2rem, sauf si la valeur calcule de 1.2vw est suprieure celle de 1.2rem, auquel cas elle est dfinie 1.2vw.
La taille de la police des titres (contrle par la font-size de l'lment HTML <h1>) a une valeur relative la fentre avec la fois un seuil maximum et un seuil minimum. Pour y parvenir, nous utilisons clamp(1.8rem, 2.5vw, 2.8rem). La valeur relative la fentre est 2.5vw, mais elle est limite entre 1.8rem et 2.8rem, donc :
2.5vw est infrieure 1.8rem, alors 1.8rem est utilise2.5vw est suprieure 2.8rem, alors 2.8rem est utiliseCela empche le texte des titres de devenir trop petit dans une fentre trs troite, ou trop grand dans une fentre trs large.
<h1>Test basique ractif</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In orci orci,
eleifend id risus nec, mattis rutrum velit. Suspendisse fringilla egestas erat
eu convallis. Phasellus eu velit ut magna dapibus elementum cursus at ligula.
Ut tempus varius nibh, nec auctor sapien iaculis sit amet. Fusce iaculis,
libero quis elementum viverra, nulla ante accumsan lectus, sit amet convallis
lacus ipsum vel est. Curabitur et urna non est consectetur pulvinar vel id
risus. Ut vestibulum, sem in semper aliquet, felis arcu euismod sapien, ac
imperdiet massa nisl quis sem. Vestibulum ac elementum felis, in tempor velit.
Pellentesque purus ex, mattis at ornare quis, porta condimentum mi. Donec
vestibulum ligula vel nulla blandit, quis euismod nulla vestibulum.
Suspendisse potenti. Nunc neque mauris, tempor sed facilisis at, ultrices eget
nulla. Pellentesque convallis ante nec augue porttitor, id tempus ante luctus.
</p>
<p>
Integer rutrum sollicitudin tellus, quis cursus nulla scelerisque nec. Nunc eu
facilisis lorem. Maecenas faucibus sapien eleifend, semper tellus at, pharetra
quam. Cras feugiat vulputate tortor at rhoncus. Class aptent taciti sociosqu
ad litora torquent per conubia nostra, per inceptos himenaeos. Nam non felis
quis sem lobortis sodales vel id libero. Phasellus sit amet placerat lorem.
</p>
html {
font-family: sans-serif;
}
body {
margin: 0 auto;
width: min(1000px, calc(70% + 100px));
}
h1 {
letter-spacing: 2px;
font-size: clamp(1.8rem, 2.5vw, 2.8rem);
}
p {
line-height: 1.5;
font-size: max(1.2rem, 1.2vw);
}
| Spcification |
|---|
| CSS Values and Units Module Level 4 # funcdef-clamp |
calc()max()min()Cette page a t modifie le 17 aot 2026 par les contributeurices du MDN.
-webkit-border-before-webkit-box-reflect-webkit-mask-box-image-webkit-mask-composite-webkit-mask-position-x-webkit-mask-position-y-webkit-mask-repeat-x-webkit-mask-repeat-y-webkit-tap-highlight-color-webkit-text-fill-color-webkit-text-security-webkit-text-stroke-webkit-text-stroke-color-webkit-text-stroke-width-webkit-touch-calloutProprits personnalises (--*) : variables CSSaccent-coloralignment-baselineallanchor-nameanchor-scopeanimationappearanceaspect-ratiobackdrop-filterbackface-visibilitybackgroundbaseline-shiftbaseline-sourceblock-sizeborder-blockborder-block-colorborder-block-endborder-block-end-colorborder-block-end-styleborder-block-end-widthborder-block-startborder-block-start-colorborder-block-start-styleborder-block-start-widthborder-block-styleborder-block-widthborder-bottomborder-bottom-colorborder-bottom-left-radiusborder-bottom-right-radiusborder-bottom-styleborder-bottom-widthborder-collapseborder-colorborder-end-end-radiusborder-end-start-radiusborder-imageborder-image-outsetborder-image-repeatborder-image-sliceborder-image-sourceborder-image-widthborder-inlineborder-inline-colorborder-inline-endborder-inline-end-colorborder-inline-end-styleborder-inline-end-widthborder-inline-startborder-inline-start-colorborder-inline-start-styleborder-inline-start-widthborder-inline-styleborder-inline-widthborder-leftborder-left-colorborder-left-styleborder-left-widthborder-radiusborder-rightborder-right-colorborder-right-styleborder-right-widthborder-shapeborder-spacingborder-start-end-radiusborder-start-start-radiusborder-styleborder-topborder-top-colorborder-top-left-radiusborder-top-right-radiusborder-top-styleborder-top-widthborder-widthborderbottomcaption-sidecaretclearclip-pathclip-ruleclipcolorcolumnscontaincontainer-namecontainer-typecontainercontent-visibilitycontentcorner-block-end-shapecorner-block-start-shapecorner-bottom-left-shapecorner-bottom-right-shapecorner-bottom-shapecorner-end-end-shapecorner-end-start-shapecorner-inline-end-shapecorner-inline-start-shapecorner-left-shapecorner-right-shapecorner-shapecorner-start-end-shapecorner-start-start-shapecorner-top-left-shapecorner-top-right-shapecorner-top-shapecursorcxcyddirectiondisplaydominant-baselinedynamic-range-limitempty-cellsfield-sizingfill-opacityfill-rulefillfilterflexfloatflood-colorflood-opacityfont-familyfont-feature-settingsfont-kerningfont-language-overridefont-optical-sizingfont-palettefont-sizefont-size-adjustfont-smoothfont-stretchfont-stylefont-synthesisfont-synthesis-positionfont-synthesis-small-capsfont-synthesis-stylefont-synthesis-weightfont-variantfont-variant-alternatesfont-variant-capsfont-variant-east-asianfont-variant-emojifont-variant-ligaturesfont-variant-numericfont-variant-positionfont-variation-settingsfont-weightfont-widthfontforced-color-adjustframe-sizinggapgridhanging-punctuationheighthyphenate-characterhyphenate-limit-charshyphensinitial-letterinline-sizeinsetinteractivityinterpolate-sizeisolationleftletter-spacinglighting-colorlink-parametersmarginmarkermaskmix-blend-modeoffsetopacityorderorphansoutlineoverflowoverlaypaddingpagepaint-orderpath-lengthperspective-originperspectivepointer-eventspositionprint-color-adjustquotesrreading-flowreading-orderresizerightrotaterulerxryscalescroll-behaviorscroll-initial-targetscroll-marginscroll-margin-blockscroll-margin-block-endscroll-margin-block-startscroll-margin-bottomscroll-margin-inlinescroll-margin-inline-endscroll-margin-inline-startscroll-margin-leftscroll-margin-rightscroll-margin-topscroll-marker-groupscroll-paddingscroll-padding-blockscroll-padding-block-endscroll-padding-block-startscroll-padding-bottomscroll-padding-inlinescroll-padding-inline-endscroll-padding-inline-startscroll-padding-leftscroll-padding-rightscroll-padding-topscroll-snap-alignscroll-snap-stopscroll-snap-typescroll-target-groupscroll-timelinescroll-timeline-axisscroll-timeline-namespeak-asstop-colorstop-opacitystroketab-sizetable-layouttext-aligntext-align-lasttext-anchortext-autospacetext-boxtext-box-edgetext-box-trimtext-combine-uprighttext-decorationtext-decoration-colortext-decoration-insettext-decoration-linetext-decoration-skiptext-decoration-skip-inktext-decoration-styletext-decoration-thicknesstext-emphasistext-emphasis-colortext-emphasis-positiontext-emphasis-styletext-indenttext-justifytext-orientationtext-overflowtext-renderingtext-shadowtext-size-adjusttext-spacing-trimtext-transformtext-underline-offsettext-underline-positiontext-wraptext-wrap-modetext-wrap-styletimeline-scopetoptouch-actiontransformtransitiontranslateunicode-bidiuser-modifyuser-selectvector-effectvertical-alignvisibilitywhite-spacewhite-space-collapsewidowswidthwill-changeword-breakword-spacingwriting-modexyz-indexzoom:active-view-transition:active-view-transition-type():active:any-link:autofill:blank:buffering:checked:current:default:defined:dir():disabled:empty:enabled:first-child:first-of-type:first:focus-visible:focus-within:focus:fullscreen:future:has-slotted:has():heading:heading():host-context():host:host():hover:in-range:indeterminate:interest-source:interest-target:invalid:is():lang():last-child:last-of-type:left:link:local-link:modal:muted:not():only-child:only-of-type:open:optional:out-of-range:past:paused:picture-in-picture:placeholder-shown:playing:popover-open:read-only:read-write:required:right:root:scope:seeking:stalled:state():target:user-invalid:user-valid:valid:visited:volume-locked:where():xr-overlay::-webkit-inner-spin-button::-webkit-meter-bar::-webkit-meter-even-less-good-value::-webkit-meter-inner-element::-webkit-meter-optimum-value::-webkit-meter-suboptimum-value::-webkit-progress-bar::-webkit-progress-inner-element::-webkit-progress-value::-webkit-scrollbar::-webkit-search-cancel-button::-webkit-search-results-button::-webkit-slider-runnable-track::-webkit-slider-thumb::after::backdrop::before::checkmark::column::cue::details-content::file-selector-button::first-letter::first-line::grammar-error::highlight()::marker::part()::picker-icon::picker()::placeholder::search-text::selection::slotted()::spelling-error::target-text@charset@color-profile@container@counter-style@custom-media@document@font-face@font-feature-values@font-palette-values@function@import@keyframes@layer@media-moz-device-pixel-ratio-webkit-animation-webkit-device-pixel-ratio-webkit-transform-2d-webkit-transform-3d-webkit-transitionany-hoverany-pointeraspect-ratiocolorcolor-gamutcolor-indexdevice-aspect-ratiodevice-heightdevice-posturedevice-widthdisplay-modedynamic-rangeforced-colorsgridheighthorizontal-viewport-segmentshoverinverted-colorsmonochromeorientationoverflow-blockoverflow-inlinepointerprefers-color-schemeprefers-contrastprefers-reduced-dataprefers-reduced-motionprefers-reduced-transparencyresolutionscanscriptingshapeupdatevertical-viewport-segmentsvideo-dynamic-rangewidth@namespace@page@position-try@property@scope@starting-style@supports@view-transition<absolute-size><alpha-value><angle-percentage><angle><axis><baseline-position><basic-shape><blend-mode><box-edge><calc-keyword><calc-sum><color-interpolation-method><color><content-distribution><content-position><corner-shape-value><custom-ident><dashed-function><dashed-ident><dimension><display-box><display-inside><display-internal><display-legacy><display-listitem><display-outside><easing-function><filter-function><flex><frequency-percentage><frequency><generic-family><gradient><hex-color><hue-interpolation-method><hue><ident><image><integer><length-percentage><length><line-style><line-width><named-color><number><overflow-position><overflow><percentage><position-area><position><ratio><relative-size><resolution><rule-list><self-position><shape><string><system-color><text-edge><time-percentage><time><timeline-range-name><transform-function><url>-moz-image-rect()abs()acos()alpha()anchor-size()anchor()asin()atan()atan2()attr()blur()brightness()calc-size()calc()circle()clamp()color-mix()color()conic-gradient()contrast-color()contrast()cos()counter()counters()cross-fade()cubic-bezier()device-cmyk()drop-shadow()dynamic-range-limit-mix()element()ellipse()env()exp()fit-content()grayscale()hsl()hue-rotate()hwb()hypot()if()image-set()image()inset()invert()lab()lch()light-dark()linear-gradient()linear()log()matrix()matrix3d()max()min()minmax()mod()oklab()oklch()opacity()paint()param()path()perspective()polygon()pow()progress()radial-gradient()random()ray()rect()rem()repeat()repeating-conic-gradient()repeating-linear-gradient()repeating-radial-gradient()rgb()rotate()rotate3d()rotateX()rotateY()rotateZ()round()saturate()scale()scale3d()scaleX()scaleY()scaleZ()sepia()shape()sibling-count()sibling-index()sign()sin()skew()skewX()skewY()sqrt()steps()superellipse()symbols()tan()translate()translate3d()translateX()translateY()translateZ()type()url()var()xywh()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |