line-height による余白
「セクション間は 50px 空けたい」という場合、margin-top: 50px;という指定をすると50px以上空いてしまいます。
これは line-heightの仕様により、以下のように行の上下に line-height - font-sizeから算出された値が割り当てられるからです。
この例の7pxの部分をハーフリーディングと呼びます。
そのため、50px に 7px が加わり、57px の余白になってしまいます。
解消方法
厳密に余白を設定したい場合は、以下の設定をする必要があります。
margin-top: 43px;を設定するmargin-top: -7px;を見出しに設定する
しかし、どちらにしても毎回計算をするのは面倒なため、ハーフリーディング用の mixin を作成し、計算を自動化しておくと効率が上がります。
mixin の作成
_mixin.scss
@mixinlineHeightCrop($fontsize:16,$lineFeed:24){$lineheight:$lineFeed/$fontsize;&::before,&::after{display:block;width:0;height:0;content:"";}&::before{margin-top:calc((1-#{$lineheight})*0.5em);}&::after{margin-bottom:calc((1-#{$lineheight})*0.5em);}}hoge.scss
.hoge{font-size:1.5rem;// 24px@includelineHeightCrop(24,38);}Photoshop からコーディングを行う場合は、フォントサイズの 24px を第一引数に、行送りの 38px を第二引数に入れます。
最後に
厳密には、前のセクションがテキストで終わっている場合はそのテキストと、次のセクションの見出し等のテキストに設定する必要がありますが、前のセクションのテキストは影響が小さい場合などは割愛してもよいかと思います。
尚、この minin は以下の記事を参考にしています。
上記 mixin では、line-height の計算をするのを省きたいので、Photoshop の数字を直接入力できるように変更しています。
mixin を作るメリットなども詳細にまとめてあり参考になります。

