RFS
CSS プロパティを様々なデバイスでレスポンシブルにスケールできる、Bootstrap のリサイジングエンジンです。
RFS について
Bootstrap のサイドプロジェクトである RFS は、元はフォントサイズをリサイズするために開発されたリサイジングエンジンです (RFS は Responsive Font Size の略称です)。今では RFS は、margin, padding, border-radius, box-shadow といった、ほとんどの CSS プロパティをリスケーリングできます。
適切なサイズを自動的に計算する仕組みは、ブラウザのビューポートのサイズを基にしています。値をremやビューポートのサイズを含んだ calc() 関数にコンパイルすることで、レスポンシブルなスケーリングを実現しています。
RFS の使い方
RFS のミックスインは Bootstrap に含まれており、Bootstrap の scss をインクルードすることで利用可能になります。RFS は必要であれば個別にインストールすることもできます。
ミックスインの使い方
rfs()ミックスインは font-size, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, そして padding-leftのショートカットを持っています。ソースの Sass とそれをコンパイルした CSS の例は以下です。
.title {
@include font-size(4rem);
}
.title {
font-size: calc(1.525rem + 3.3vw);
}
@media (min-width: 1200px) {
.title {
font-size: 4rem;
}
}
rfs()には以下のように様々なプロパティを渡すことができます:
.selector {
@include rfs(4rem, border-radius);
}
!importantを追加することも可能です:
.selector {
@include padding(2.5rem !important);
}
関数の使い方
インクルードしたくない場合は、別の手段として 2 つの関数があります:
rfs-value()はpx値が渡された場合にrem値に変換します。それ以外の値に対しては同じ値を返します。rfs-fluid-value()はプロパティがリスケーリングする必要があった場合に、リスケーリング可能な式に変換します。
以下の例では、lgブレークポイント下でのみ適用したいスタイルの実装に Bootstrap ビルトインのレスポンシブルなブレークポイントミックスイン を利用しています。
.selector {
@include media-breakpoint-down(lg) {
padding: rfs-fluid-value(2rem);
font-size: rfs-fluid-value(1.125rem);
}
}
@media (max-width: 991.98px) {
.selector {
padding: calc(1.325rem + 0.9vw);
font-size: 1.125rem; /* 1.125rem is small enough, so RFS won't rescale this */
}
}
さらに詳しい情報
RFS は Bootstrap 組織下の別のプロジェクトです。RFS やその設定について詳しく知りたい場合は、GitHub リポジトリ をご覧ください。