Is it possible to use some combination of calc()
and vw
units to scale linearly between 2 different font sizes?
Example: I'm giving a web page design with the following font sizes:
<h1>
is font-size: 18px @ 360px
<h1>
is font-size: 32px @ 1024px
If I wish the font-size
to scale up along with the browser width using vw
units, the math is pretty simple (SCSS syntax):
font-size: 18/360*100vw;
= font-size: 5vw;
So based on a font size of 18px @ 360px, you would use 5vw
. However, by the time the browser gets up to 1024px:
1024*0.05 = 51.2px
which is how big the <h1>
will be at 1024px which is far higher than the designed 32px
. The opposite problem will occur if I set the font-size to use 32px as the base: font-size: 32/1024*100vw;
= font-size: 3.125vw
. Now the font will be too small @360px;
So the question again, is it possible to linearly scale a font-size
between 2 font-sizes at 2 different breakpoints? Is it possible to use some sort of combination or vw
units and calc
to achieve this. I've tried to work out the equation for such a thing but I'm not sure if it is possible.
I've been thinking about trying to something like:
font-size: calc(18/360*100vw * 1.01vw);
or something along those lines but apparently that type of syntax is not accessible for calc()
.
Note: I'm not looking for a simple media query solution where I simply increase the font size @1024px. I'm looking for a way to linearly scale it smoothly between all resolutions.
An aproximate solution (I have not taken into account the fractions) would be
font-size: calc(2vw + 12px);
You need to solve the system of equations for the 2 points, and find the equation of the result
The first equation is , for a viewport of 360, a font size of 18. thus,
a * 3.6 + b = 18
Where a is the part of the vw units and b the px part
the second equation is
a * 10.24 + b = 32
Let's go to webmath and enter
The result given is
So your exact answer would be
font-size: calc (2.11vw + 10.41px);