2024/05/02
SassのMixinを使って、単位、幅の値を自動的に計算
はじめに
この記事では、SassのMixinを使って、CSSのプロパティに値を適切な単位で自動的に適用する方法を説明します。SassはCSSの拡張言語であり、Mixinは再利用可能なスタイルのブロックを定義する機能です。Mixinを使用すると、同じスタイルを複数の場所で使い回すことができます。
具体的には、ビューポートの幅に応じて値を調整するためのVW単位や、親要素やコンテキストの幅に応じて値を計算するためのパーセンテージ単位を自動的に適用します。これにより、レスポンシブデザインを実現し、異なるデバイスや画面サイズに対応したスタイルを簡単に作成できます。
SassのMixinを使用して、VW単位やパーセンテージ単位を自動的に計算する方法を詳しく解説します。この方法を理解し、実際のプロジェクトで活用することで、効率的で柔軟なスタイルシートの作成が可能になります。
以下の項目を含めて、SassのMixinの活用方法を説明します。
- Sassとは何か?
- Mixinとは何か?
- 単位の値を自動的に計算する方法
1. Sassとは何か?
Sass(Syntactically Awesome Stylesheets)は、CSSの記述をより効率的にするための拡張言語です。基本的には、普通のCSSと同じようにスタイルを記述しますが、いくつかの追加機能を提供しています。例えば、変数やネスト、Mixinなどの機能があります。これらの機能を使うことで、スタイルシートの記述が簡潔になり、保守性が向上します。つまり、SassはCSSの書き方をより便利にするためのツールです。
2. Mixinとは何か?
Mixin(ミキシン)は、Sassで再利用可能なスタイルの塊を定義する方法です。基本的には、CSSのスタイルルールをまとめたコードブロックです。これを定義しておくと、同じスタイルを複数の場所で使い回すことができます。Mixinは、プロパティと値の組み合わせをパラメータとして受け取り、それをCSSに変換します。つまり、同じスタイルを何度も書く必要がなくなり、コードの再利用性と保守性を高めることができます。
3. 単位の値を自動的に計算する方法
単位の値の自動計算とは、SassのMixinを使って、指定された値に適切な単位を自動的に付与することです。例えば、ビューポートの幅に対して相対的な値であるVW(viewport width)単位や、親要素やコンテキストに対する割合で指定するパーセンテージ単位などがあります。これらの単位を自動的に計算してCSSに適用することで、レスポンシブデザインや柔軟なスタイル設計を実現できます。
単位の値を自動的に計算する方法を使うと、以下のような利点があります。
1. 画面サイズに合わせて自動調整: 画面の大きさに応じて、文字や要素の大きさを自動的に調整できます。
2. 手間を省く: 値を手動で調整する必要がなくなり、開発時間を短縮できます。
3. 一貫性を保つ: 同じ値が異なる場所で常に同じように表示され、一貫性のあるデザインを保つことができます。
4. レスポンシブデザイン: 異なるデバイスや画面サイズに対応しやすくなり、ユーザーに最適な表示を提供できます。
3.1. VW単位の自動計算
VW単位の自動計算は、ビューポート(ウェブページを表示する画面領域)の幅に対する割合で値を指定する方法です。これは、画面の幅に応じて要素のサイズやフォントサイズを自動的に調整することを意味します。Sassのmixinを使えば、このVW単位を活用した自動計算を簡単に実現できます。つまり、画面の大きさに合わせて要素の大きさや文字サイズが自動的に変化するように設定できるということです。
_get_vwという関数とfz-vwというMixinが用意されています。これらの機能を使うことで、vwを簡単に設定できます。
コード例(SCSS)
1//pxをvwに変換するfunction 2@function _get_vw($size, $viewport: 640) { 3 $rate: calc(100 / $viewport); 4 @return $rate * $size * 1vw; 5} 6 7//フォント用のMixin 8@mixin fz-vw($font_size: 10, $viewsize: 640) { 9 font-size: $font_size * 1px; 10 font-size: _get_vw($font_size, $viewsize); 11} 12 13width: _get_vw(117,640); 14padding: _get_vw(15,640) 0; 15@include fz-vw(29,640); 16
実行結果(CSS)
1width: 18.28125vw; 2padding: 2.34375vw 0; 3font-size: 4.53125vw; 4
上記のにコードの詳細な説明を示します。
関数 _get_vw
引数:
$size
: 変換対象のピクセル値
$viewport
: 参照するビューポート幅(デフォルト: 640px)
戻り値:
ピクセル値をvwに変換した値
Mixin fz-vw
引数:
$font_size
: 設定するフォントサイズ(ピクセル値)
$viewsize
: 参照するビューポート幅(デフォルト: 640px)
width: _get_vw(117,640);
:要素の幅を117pxをvwに変換した値に設定します。
padding: _get_vw(15,640) 0;
:要素のパディングを左右に15pxをvwに変換した値、上下に0を設定します。
@include fz-vw(29,640);
:要素のフォントサイズを29pxをvwに変換した値に設定します。
戻り値:
ビューポート幅に応じて要素のサイズやフォントサイズが自動的に調整されます。
3.2. パーセンテージ値の自動計算
パーセンテージ値は、親要素やコンテキストの幅に対する割合で値を指定するための単位です。SassのMixinを使って、特定のピクセル値を親要素やコンテキストの幅に基づいて自動的にパーセンテージ値に変換する方法を説明します。
コード例(SCSS)
1//pxを%に変換するfunction 2@function sw($size, $basewidth: 1180) { 3 $rate: calc(100 / $basewidth); 4 @return $rate * $size * 1%; 5} 6 7padding-top: sw(20,640); 8width: sw(47,560);
実行結果(CSS)
1padding-top: 3.125%; 2width: 8.4%;
上記のにコードの詳細な説明を示します。
関数 sw
引数:
$size
: 変換したいピクセル値
$basewidth
: 基準となるウィンドウ幅(デフォルトは1180px)
処理:
$rate = calc(100 / $basewidth);
ウィンドウ幅に対する1pxあたりの割合を計算します。
@return $rate * $size * 1%;
:ピクセル値を割合に変換し、% を付加します。
戻り値:
ピクセル値をウィンドウ幅に対する割合に変換した値(%)
補足
$basewidth
は、関数内でデフォルト値として1180pxが設定されていますが、必要に応じて変更できます。vw単位以外にも、em単位やrem単位など、様々な単位を使ってレスポンシブデザインを実現できます。
今回の例では、ウィンドウ幅に対する割合を計算するために calc() 関数を使用していますが、Sassのバージョンによっては div() 関数でも同様の処理を行うことができます。
まとめ
今回紹介した方法を使えば、簡単にレスポンシブなWebデザインを作成できます。ビューポートの幅に対する割合で値を指定するVW単位や、親要素やコンテキストの幅に対する割合で値を指定するパーセンテージ単位を活用することで、画面サイズに応じて自動的にスタイルを調整できます。実際にプロジェクトに適用してみて、どのように効果が現れるか試してみてください。
参考
Author Profile
KATHYHUN
ミャンマー人です。 フロントエンジニアです。 タイ料理が好きです。
SHARE