SCSSのmixin・関数集:レスポンシブ・フォントサイズ・余白管理を効率化しよう

SCSSを使った開発では、毎回似たようなコードを繰り返し書いていませんか?本記事では、レスポンシブ対応やフォントサイズ、余白管理を効率化するためのSCSSのmixinや関数集をご紹介します。これらをプロジェクトに取り入れることで、保守性と可読性を大きく向上させることができます。
目次
レスポンシブ対応を効率化するmixin
メディアクエリを毎回書くのは面倒ですが、mixinを使えば一行で完結できます。以下はブレークポイントを定義し、それを使うmixinの例です。
// src/styles/base/_mediaquery.scss
$breakpoints: (
sm: 480px,
md: 768px,
lg: 1024px,
xl: 1280px,
);
@mixin mq($point) {
@if map-has-key($breakpoints, $point) {
@media screen and (min-width: map-get($breakpoints, $point)) {
@content;
}
} @else {
@warn "未定義のブレークポイント #{$point} が使用されています。";
}
}
使用例
// src/styles/components/_element.scss
@use '../base/mediaquery';
.element {
font-size: 16px;
@include mediaquery.mq(md) {
font-size: 18px;
}
@include mediaquery.mq(lg) {
font-size: 20px;
}
}
レスポンシブなフォントサイズ関数
CSS Clamp関数を使って、ビューポート幅に応じた自動スケールフォントを実現する関数です。
// src/styles/base/_font.scss
@function fluid-font($min-size, $max-size, $min-vw: 375, $max-vw: 1280) {
$slope: ($max-size - $min-size) / ($max-vw - $min-vw);
$y-axis-intercept: $min-size - $slope * $min-vw;
@return clamp(#{$min-size}px, #{$slope * 100}vw + #{$y-axis-intercept}px, #{$max-size}px);
}
使用例
// src/styles/components/_title.scss
@use '../base/font';
.title {
font-size: font.fluid-font(16, 24); // 画面サイズに応じて16px〜24pxに変化
}
余白の一貫性を保つスペーシング関数
余白のサイズを変数化しておくことで、統一感のあるデザインを保てます。
// src/styles/base/_spacing.scss
$space-unit: 8px;
@function space($multiplier) {
@return $space-unit * $multiplier;
}
使用例
// src/styles/components/_section.scss
@use '../base/spacing';
.section {
margin-bottom: spacing.space(4); // => 32px
padding-top: spacing.space(2); // => 16px
}
または、mixinとしても利用可能です。
// src/styles/base/_spacing.scss
@mixin spacing($property, $multiplier) {
#{$property}: space($multiplier);
}
// src/styles/components/_card.scss
@use '../base/spacing';
.card {
@include spacing.spacing(margin-bottom, 3); // => margin-bottom: 24px;
}
よく使う定番mixinまとめ
ここまでの機能を統合したSCSS構成例です。
// src/styles/style.scss
@use 'base/mediaquery';
@use 'base/font';
@use 'base/spacing';
.article-title {
font-size: font.fluid-font(20, 32);
margin-bottom: spacing.space(3);
@include mediaquery.mq(lg) {
margin-bottom: spacing.space(4);
}
}
このようにモジュール化することで、SCSSの保守性が大幅に向上します。
まとめ:効率的なSCSS設計で生産性を上げよう
レスポンシブ対応、フォントサイズ調整、余白の統一は、プロジェクトごとに何度も登場する定型作業です。今回紹介したmixinや関数をあらかじめ共通モジュールとして整備しておくことで、開発スピードが大幅に向上し、チームでのコーディングも一貫性のあるものになります。
ここで紹介したmixinや関数は、あくまでも基本設計の一例です。プロジェクトの要件やデザインの方向性に応じて、柔軟に修正・拡張していくことが重要です。ぜひ、自身のプロジェクトにも最適な形で取り入れてみてください。

Contact
ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい
ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。
デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。