SCSSで作成したclamp関数のサンプル

ブラウザの横幅が変わるとフォントサイズも変わります。

親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。なぜそんな無闇をしたと聞く人があるかも知れぬ。別段深い理由でもない。新築の二階から首を出していたら、同級生の一人が冗談に、いくら威張っても、そこから飛び降りる事は出来まい。弱虫やーい。と囃したからである。小使に負ぶさって帰って来た時、おやじが大きな眼をして二階ぐらいから飛び降りて腰を抜かす奴があるかと云ったから、この次は抜かさずに飛んで見せますと答えた。(青空文庫より)

@function calc-clamp($min-font-size, $max-font-size, $min-viewport: 320px, $max-viewport: 1200px) {
  $font-size-diff: $max-font-size - $min-font-size;
  $viewport-diff: $max-viewport - $min-viewport;
  $vw: ($font-size-diff / $viewport-diff) * 100;
  $vw: round($vw * 1000) / 1000;
  $rem: ($min-font-size - ( $min-viewport * $vw / 100 )) / 16px;
  $rem-component: round($rem * 1000) / 1000;
  $min-fz: $min-font-size / 16px;
  $max-fz: $max-font-size / 16px;

  @return unquote("clamp(#{$min-fz}rem, #{$rem-component}rem + #{$vw}vw, #{$max-fz}rem)");
}

/* 使用例 */
.example {
  max-width: 1200px;
  margin: auto;
  padding: 1rem;
  font-size: calc-clamp(16px, 24px);
}

元記事を表示する