フォントの上下余白を考慮したマージンを出すmixin
PhotoshopやXDのデザインデータでコーディングする時、
例えばテキストボックスを選択して、そのテキストボックスと下のコンテンツのマージンを参照すると、行送りを抜いたサイズを参照するので、参照した余白通りに指定してもコーディング側の余白が大きくなります。(Photoshopはweb以外もあるので仕方ないとは思いますが、XDは流石に対応して欲しい・・ちなみに Figmaはそこらへん対応してくれている。ありがたいです🥰 )
計算が面倒なので、SCSSでフォントのline-height
を考慮して上下の余白を簡単に実装できるmixinを作りました。line-height
の計算も手軽に取得できる関数も一緒に作っています。
line-heightの計算
line-height
の計算は下記で取得できます。
行送りの数値(px)÷ フォントサイズ(px) = 行送り数値
これをSCSSの@function
で関数にします。
//line-heightの計算
@function line-height($fontSize: 16, $lineHeight: 24) {
@return calc($lineHeight / $fontSize);
}
//下記のように使う
.demo {
$line-height: line-height(18, 36);
line-height: $line-height; // line-height: 2; が出力
}
フォント余白の計算
フォントの余白は下記で取得できます。
{( フォントサイズ(px)x フォントのline-height ) - フォントサイズ(px)} / 2 = 文字の上余白または下余白(px)
これを @mixin
にします。
// フォントの余白を合わせたマージンを作成(上下の余白)
// $positon = margin-topやpadding-bottomなど
// $fontSize = font-size 数値を入れる
// $lineHeight = line-height 整数か少数で指定する
// $px = 開けたい距離。数値をいれる
//初期値ありで呼びだしたいときのメモ
// @include font-margin($positon: "margin-top", $px: 20);
@mixin font-margin($positon, $fontSize: 16, $lineHeight: 2, $px) {
$margin_1: calc((($fontSize * $lineHeight) - $fontSize) / 2);
$result_margin: $px - $margin_1;
#{$positon}: $result_margin + px;
}
//下記のように使う
.demo {
$line-height: line-height(18, 36);
line-height: $line-height; // line-height: 2;が出力
//さきほど作った$line-height関数も一緒に使えます。
@include font-margin("margin-bottom", 18, $line-height, 40);
}