Responsive Web Typography Crash Course

Responsive Web Typography Crash Course

Please watch the video.

For quick copy paste, take the following SCSS code and drop it into

//credit: PK ( 
//this one is the simplified version
@mixin awesome-pixel-sizes($desktop-size, $desktop-px, $mobile-size, $mobile-px) {
  ///desktop & mobile
  //$desktop-size: 1440;
  //$mobile-size: 780;
  $rem: 16;

  $delta: ($desktop-px - $mobile-px) / ($desktop-size - $mobile-size); ///slope
  $delta-rounded: round($delta * 1000) / 1000; ///slope rounded.. round slope
  $deltavw: ($delta-rounded * 100);

  $intercept: ($mobile-px - ($delta-rounded * $mobile-size)); ///y intercept

  ///pixel based
  $calc-vw: (($desktop-px - $rem) * 100) / $desktop-size;
  $calc-01: (($calc-vw * $mobile-size) * .01) + $rem;
  $calc-01-rounded: round($calc-01 * 10000) / 10000;
  $final-rem: ($mobile-px / $calc-01-rounded);
  $final-rem-rounded: round($final-rem * 10000) / 10000;

  ///for compatibility
  font-size: calc(#{$calc-vw}vw + #{$final-rem-rounded}rem);

  ////for clamps 
  @if $intercept < 0 {
    $thecalc: ($intercept * -1);
    font-size: clamp(#{$mobile-px}px, calc(#{$deltavw}vw - #{$thecalc}px), #{$desktop-px}px);
  } @else {
    $thecalc: $intercept;
    font-size: clamp(#{$mobile-px}px, calc(#{$deltavw}vw + #{$thecalc}px), #{$desktop-px}px);

.single {
  h1 {
    line-height: 1.2;
    letter-spacing: .05em;
    margin: 2em 0 1em 0;
    @include awesome-pixel-sizes(1280, 54, 650, 24);
  h2 {

  h3 {

  h4 {

  h5 {

  h6 {

  li {


Here are the parent selectors you could use depending on your site builder of choice.




Shopify - Debut



Beaver Builder 

	#inner_content-11-1 (Change the numbers to work on your site)


PS. Duda didn’t even load the templates for me to inspect, so… and that was even AFTER I went to the .com and realized that it’s not the page building service. .. what..? I don’t even remember what the TLD was. It’s THAT bad. So I didn’t include Duda in the list. Sorry, you’re worse than WIX and that’s saying something.

Please note: for Squarespace users

Squarespace uses LESS in its custom CSS entry field. So you can’t just drop in

calc(2.3vw + 1.2rem)

the numbers will calculate. whoops. So you’ll have to escape it into a string with a ~”” like this

calc(~"2.3vw + 1.2rem")

and it should work.

Impressed with the method? I have a lot more of these kinds of goodies in my SASS folder.

If you’re interested in SASS, you’re in luck!

Check this out!

Also, if you’re interested in getting started in CSS have a look at this.

There’s also a CSS package.

Lastly, if you want to go full-blown custom structure with your own custom theme, then have a look at this.

Leave a Reply

Your email address will not be published. Required fields are marked *

    New tutorials

    Why no ads?

    Hi, I'm PK, and I maintain and publish content on this site for two reasons.

    1. To give back to the community. I learned so much from people's tutorials and StackOverflow that I wanted to contribute and help others.

    2. To provide a more structured learning experience. People struggle to find the course that guides them from start to finish, based off of real life experience, and my courses provide that.

    The only "ads" I have here are for my own courses, and maybe an affiliate link, but that's it. They fund the website resources and provide more motivation for me to produce better content.

    Any bit of interest helps. Even sharing with your friends, suggesting my courses to your developer or designer, or subscribing to my YT channel, or joining our Discord. Thanks and I'll see you around!

    There's a newsletter!

    Sign up to the newsletter for the occasional updates on courses, products, tutorials, and sales.