How can the clamp()
CSS function be used with TailwindCSS to make the fontSize
linearly scale between a min and a max value?
Interested in particular about integrating with Next.js.
At the time of writing, TailwindCSS doesn't seem to support clamp()
natively by default.
Search returns a use case on multi-line truncation using the line-clamp
plugin, which is different from clamping font sizes.
Taking inspiration from this GitHub issue, using clamp()
in TailwindCSS can be accomplished by extending the default theme. Example in a Next.js app:
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
// Or if using `src` directory:
"./src/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
fontSize: {
clamp: "clamp(1rem, 5vw, 3rem)",
},
},
},
plugins: [],
};
To use it in a jsx
or tsx
component, one can just pass text-clamp
as an additional className
.
Link to working codesandbox.