How to clamp font size using TailwindCSS?

7.9k Views Asked by At

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.

2

There are 2 best solutions below

1
swimmer On BEST ANSWER

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.

enter image description here

Link to working codesandbox.

0
Metehan Altuntekin On

There is no Tailwind utility class to do this easily but you can do this by writing custom CSS with Arbitrary properties

Example:


<h1 class="[font-size:_clamp(2em,5vw,10em)]">Text</h1>