模写修行メディア

line-heightで出来るスペースをSCSSのmixinを使って効率よく消す方法

94%OFF SALE

弊社メンバーで作ったUdemy教材がセール中です!

Figmaからのコーディングを学ぶ

テキストの上下のスペースが気になったことはありませんか?

webのline-heightは、テキストの上下にスペースが入る仕様になっています。特にフォントサイズが大きめのテキストだと目立つ場合が多いです。

また、デザインツールの行間(行送り)とwebのline-heightの仕様の違いにより、デザインを忠実に再現するためには細かい計算が必要になります。

この記事では、SCSSのmixinを使って、効率良くline-heightで出来るスペースを消す方法を紹介します。

👇 メンターやってます 👇

模写修行やこのメディアを作ったメンバー中心に、Web制作業界を目指す方のための学習支援サービス 『Hello Mentor』 を運営しています。

基礎学習後に迷子になっていませんか?脱初心者したいなら、私たちにお任せください!

模写武者くんのアイコン
  • 基礎学習後にやるべきことがわからない...
  • スクール卒だけど実力不足だと感じている...
  • 自分のコードが正しい書き方かわからない...
  • 未経験から1人で転職できる気がしない...
  • 独立するためのノウハウがない...

特に上記のような方は、ぜひ下記のリンクからサービス詳細をご覧ください。

受け入れ人数制限あり

詳しく見る

サブスクで入会金・解約金・最低契約期間もなし

Hello MentorのLINEを登録すると、過去ウェビナーの一部をプレゼントしています。また、今後開催するウェビナーや講義にも無料で参加できるチャンスがあります。

👆 無料でプレゼント 👆

この記事の目次

line-heightの上下のスペースが気になる...

line-heightの上下のスペースの図

webのline-heightの仕様は、上の画像のように各行の上下にスペースが入ります。このスペースはハーフ・レディングと呼ばれています。

.hoge{
    line-height: 1.5;
    font-size: 20px;
}

例えば上の指定だと、((20 × 1.5) - 20) / 2 = 5px が各行の上下に入ります。

  • 1行目の上には5px
  • 1行目と2行目の間は5px+5pxで10px
  • 2行目の下には5px

↑これらのスペースが空くことになります。

フォントサイズが小さい場合は、あまり気になりませんが、タイトルやキャッチコピーなど、フォントサイズの大きな箇所は気になる場合があります。

デザインツールとwebのline-heightの仕様の違い

XDの行間(行送り)とwebのline-heightの仕様の違い

各デザインツールの行間(行送り)とwebのline-heightは仕様が異なる場合があります。

  • XDでは上の画像のように行の間のみスペースが入る(上下には入らない)
  • Figmaはwebと同じ仕様

ピクセルパーフェクトでコーディングする際、この仕様の違いがネックになります。

  1. XDでテキストの上に余白が16xp空いている
  2. コーディング時はmarginで16px空けた
  3. ハーフ・レディングのせいでwebのほうがスペースが大きくなる

↑このようなことが起きます。この場合、コーディング時にテキストの上下のハーフ・レディングを消せば、デザインを忠実に再現することができます。

デザインをピクセル単位で再現すること、1pxのズレもなく再現を目指すこと。※ ただし、完全一致は難しい場合もある。

基礎学習後...迷子になっていませんか?

Web制作業界を目指す方の多くが、基礎学習後にやるべきことがわからず、迷子状態になっています。あなたも下記のように感じていませんか?

  • 基礎学習後にやるべきことがわからない...
  • スクール卒だけど実力不足だと感じている...
  • 自分のコードが正しい書き方かわからない...
  • 未経験から1人で転職できる気がしない...
  • 独立するためのノウハウがない...

そんな悩みを解決するために、模写修行やこのメディアを作ったエンジニア・デザイナー中心に、学習支援サービス 『Hello Mentor』 を運営しています。

転職成功者や副業・フリーランスデビューした方も出ています。

受け入れ人数制限あり

詳しく見る

サブスクで入会金・解約金・最低契約期間もなし

Hello MentorのLINEを登録すると、過去ウェビナーの一部をプレゼントしています。また、今後開催するウェビナーや講義にも無料で参加できるチャンスがあります。

👆 無料でプレゼント 👆

line-heightで出来るスペースを消す方法

line-heightの上下のスペースの図

1番上と1番下のハーフ・レディングを消す方法を紹介します。

ネガティブマージンを使う方法

.hoge{
    line-height: 1.5;
    font-size: 20px;
    margin-top: -5px;
    margin-bottom: -5px;
}

ハーフ・レディング分のネガティブマージンを使ってスペースを消すことができます。ただし、毎回何pxか計算するのはとても面倒です。

SCSSのmixinを使う方法

@mixin lineHeightSpaceFill($line-height) {
    &::before,
    &::after {
        content: "";
        display: block;
        width: 0;
        height: 0;
    }
    &::before {
        margin-top: calc((1 - #{$line-height}) * 0.5em);
    }
    &::after {
        margin-bottom: calc((1 - #{$line-height}) * 0.5em);
    }
}
/* 使用例 */
.hoge{
    font-size: 16px;
    line-height: 2;
    @include g.lineHeightSpaceFill(2);
}

テキストの上下に擬似要素でハーフ・レディング分のネガティブマージンを入れています。毎回mixinを使うのは面倒ではありますが、計算が省けるのでまだましです。

line-height分の調整前と後の比較

調整前と後の比較
該当箇所CSS
タイトルline-height: 1.8
font-size: 32px
画像下のテキストline-height: 2
font-size: 16px

画像の左はハーフ・レディング分の調整をしていないもので、右は調整したものです。調整するかしないかで結構な違いがあると感じるのではないでしょうか?

基礎学習後...迷子になっていませんか?

模写修行やこのメディアを作ったメンバー中心に、Web制作業界を目指す方のための学習支援サービス 『Hello Mentor』 を運営しています。

下記のような、基礎学習後にやるべきことがわからず、迷子状態になっている方に特におすすめです

  • 基礎学習後にやるべきことがわからない...
  • スクール卒だけど実力不足だと感じている...
  • 自分のコードが正しい書き方かわからない...
  • 未経験から1人で転職できる気がしない...
  • 独立するためのノウハウがない...

メンターは、全員が現役のプロです。駆け出しの方やメンターだけをやっている方はいません。

少数精鋭で運営しているため、受け入れ人数に限りがあります。本気でWeb制作業界を目指している方は、ぜひご検討ください。

受け入れ人数制限あり

詳しく見る

サブスクで入会金・解約金・最低契約期間もなし

Hello MentorのLINEを登録すると、過去ウェビナーの一部をプレゼントしています。また、今後開催するウェビナーや講義にも無料で参加できるチャンスがあります。

この記事を書いた人

Gakuのアイコン

Gaku / @gaku92014091

フリーランス8年を経て法人化(4期目)。コンテンツ制作、ライティング、マーケティング、デザイン、コーディング、プログラミングなど、幅広くやってます!

当メディア運営メンバーでメンターやってます!👉

詳しく見る

\Share/

模写修行のトップページのスクリーンショット
模写修行

駆け出しコーダー向けコーディング練習教材