The idea of Fluid Typography has been around for quite some time. It is about scaling the font-size up or down depending on the screen size. In the past we used media queries to set breakpoints and adjust font-size for each different device. While this approach still works, it’s quite time consuming and hard to maintain. Now with the release of the new clamp property, we can achieve the same result with just one line of CSS without setting complex media queries.

The Clamp Property

The clamp takes in three arguments in the following syntax:

font-size: clamp(min value, prefer value, max value);

min value: The minimum font-size

prefer value: The prefer font-size. Usually set in relative units. (i.e. rem, em, vw, etc…)

max value: The maximum font-size

As the screen size changes, browsers will try to apply the prefered font-size value, but if the preferred value has passed the min/max threshold, browsers will apply min/max font-size instead.

resize using clamp
resize using clamp

Beyond Font Size

It is worth mentioning that the clamp property can also be used for setting min/max margin or padding. The syntax is identical, we simply specify the min/max and preferred value for margin/padding.

For instance if we want to set a dynamic vertical margin we can use the following syntax:

margin: clamp(0.5rem, 0.75vw, 1rem) 0;

Browser Support and Fallback

The clamp property has a good range of browser support. It can be used on all major browsers.

However, since it’s a relatively new CSS property, it doesn’t work on IE unfortunately.

clamp browser support
clamp browser support

On browsers that do not support the clamp property, you can use min(), max() property to achieve the same result.

font-size: max( min value, min( prefer value, max value ) );
Fluid typography using clamp and min max properties
Fluid typography using clamp and min max properties