
Adding Fluid Typography Support to WordPress Block Themes
Open up your style.css
file, slap in a style rule with fancy clamp()
-ing on the font-size
property, and good to go, right? Sure, that’ll give you fluid text, but to get Block Editor controls that make it possible to apply fluid type anywhere on your WordPress site? That requires a different approach in these block-ified days.
[Fluid typography] is also a part of making WordPress more powerful, while not more complicated (which we all know is quite the challenge). […] Fluid typography just works. Actually, I think it works great.
Now that this new feature is available in the WordPress Block Editor by default, theme authors can apply uniform fluid typography without writing additional code.
So, how do we put this new fluid typography to use in WordPress? The answer is in theme.json
, a new-ish file specific to block themes that contains a bunch of theme configurations in key:value pairs.
Let’s look at a rule for a large font in theme.json
where contentSize: 768px
and we’re working with a widesize: 1600px
layout. This is how we can specify a CSS font-size
using the clamp()
function:
As of WordPress 6.1, only rem
, em
and px
units are supported.
That’s great and works, but with the new fluid type feature we would actually use a different approach. First, we opt into fluid typography on settings.typography
, which has a new fluid
property:
Then we specify our settings.fontSizes
like before, but with a new fluidSize
property where we can set the min
and max
size values for our fluid type range.
That’s really it. We just added fluid type to a font size called “Large” with a range that starts at 2.25rem
and scales up to 3rem
. Now, we can apply the “Large” font to any block with font settings.
…which is applied to the element, say a Paragraph Block:
For demonstration purposes, let’s use the calculator to define our font-size
range so that the size is 36px
at a 768px
viewport width and 48px
at a 1600px
viewport width.
The calculator automatically generates the following CSS:
The calculator provide options to select input units as px
, rem
, and em
. If we select rem
unit, the calculator generates the following clamp()
value:
So, those minimum and maximum values correspond to the the fluidSize.min
and fluidSize.max
values in theme.json
. The min
value is applied at viewports that are 768px
wide and below. Then the font-size
scales up as the viewport width grows. If the viewport is wider than 1600px
, the max
is applied and the font-size
is capped there.
First, let’s make sure we’re running the Gutenberg plugin (13.8 and up) or WordPress 6.1, then opt into fluid type on the settings.typography.fluid
property in the theme.json
file:
Now, let’s drop the settings.typography.fontSizes
examples in there:
If everything is working correctly, we can now head into the WordPress Block Editor and apply the “Normal” font setting to our block:
Nice! And if we save and inspect that element on the front end, this is the markup:
Very good. Now let’s make sure the CSS is actually there:
Good, good. Let’s expose that CSS custom property to see if it’s really clampin’ things:
Looks like everything is working just as we want it! Let’s look at another example…
This time, we’re working with smaller wideSize
value of 1000px
instead of 1600px
. This should allow us to see fluid type working in an exact range.
OK, on to defining some custom font sizes under settings.typography.fontSizes:
Notice that we’ve applied the fluid type feature only on the “Normal”, “Medium”, and “Large” font settings. “Extra Large” is the odd one out where the fluid
object is set to false
.
Let’s check the markup on the front end:
Good start! Let’s confirm that the .has-x-large-font-size
class is excluded from fluid type:
If we expose the --wp--preset--font-size--x-large
variable, we’ll see it’s set to 2.25rem
.
That’s exactly what we want!
Understandably, only a few recently released themes contain the new fluid typography feature. But here are the ones I found that define it in theme.json
:
Having fluid typography in WordPress at the settings level is super exciting! I thought I’d share some thoughts from folks in the WordPress developer community who have commented on it.
Matias Ventura, the lead architect of the Gutenberg project:
As one of the bigger efforts towards making publishing beautifully rich pages in WordPress, fluid typography is a pretty big experience win for both the folks building with WordPress — and those consuming the content.
Not gonna lie, I think this is the feature I’m most excited about. Was using clamp to do this but the syntax looks easier for your average person.
I love the power of fluid typography, however I also don’t believe that it should just be enabled by default. It’s usage (and the details of it) are important design decisions that should be made carefully.
I used the following articles when researching fluid type and how WordPress is implementing it as a feature.
If you need help creating a digital marketing strategy for your business, don’t hesitate to contact one of Digidude’s consultants.
Post a Comment
You must be logged in to post a comment.