Typography

Enhance readability across devices with Luxa CSS's fluid typography scale.

Luxa dynamically adjusts font sizes with the viewport width through a fluid-type scale, ensuring optimal readability on any device. A simple formula in the CSS’s clamp function creates this fluidity, making the text appear perfectly on screens of any size.

The clamp() function in CSS takes three parameters: a minimum value, a preferred value (usually calculated based on the viewport width), and a maximum value. It ensures that the element’s size scales fluidly between the minimum and maximum values based on the viewport size.

NameMin size (px)Calc (vw + px)Max size (px)Fallback size (px)Fallback size at 80rem (px)
--text-01120.21vw + 11.3614.081214.08
--text-0214.40.32vw + 13.4417.4414.417.44
--text-0317.280.48vw + 15.6821.9217.2821.92
--text-0420.80.69vw + 18.5627.3620.827.36
--text-0524.960.97vw + 21.7634.2424.9634.24
--text-0629.921.34vw + 25.642.7229.9242.72

Pixel perfection and design intention

Embracing fluid-type scales marks a shift from pixel-perfect design to a more flexible approach. Instead of clinging to precise values and rigid breakpoint control, entrusting the browser with layout adjustments ensures a tailored experience on every device. This ‘letting go’ doesn’t mean losing grip but gaining a more robust, universally adaptive design.

Further reading:

Reproduce in Tailwind CSS

By default, Tailwind will look for an optional tailwind.config.js file at the root of your project, where you can define any customizations, such as a fluid-type scale.

Add the following settings within the theme.extend section to replicate the Luxa-type scale:

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      fontSize: {
        "text-01": "clamp(0.75rem, 0.21vw + 0.71rem, 0.88rem)",
        "text-02": "clamp(0.9rem, 0.32vw + 0.84rem, 1.09rem)",
        "text-03": "clamp(1.08rem, 0.48vw + 0.98rem, 1.37rem)",
        "text-04": "clamp(1.3rem, 0.69vw + 1.16rem, 1.71rem)",
        "text-05": "clamp(1.56rem, 0.97vw + 1.36rem, 2.14rem)",
        "text-06": "clamp(1.87rem, 1.34vw + 1.6rem, 2.67rem)"
      }
    }
  }
};