マージン、ボーダー、パディングを設定したインライン要素の位置がずれる

症状

インラインレベル要素に対してマージン、ボーダー、パディングのいずれかを設定するとボックスの位置がずれてしまう。

  • マージンを設定
    • インラインレベル要素の前後に改行が入る
    • インラインレベル要素が1行分、上方向にずれる(本来置かれるべき行の先頭部に移動している)
    • 下マージンが設置されてしまう
    • 背景の指定が反映されない(たまに反映されることもある)
  • ボーダーを設定
    • インラインレベル要素の前後に改行が入る
  • パディングを設定
    • インラインレベル要素の前後に改行が入る
    • インラインレベル要素が1行分、上方向にずれる(本来置かれるべき行の先頭部に移動している)
    • 上パディングが設置されない
    • 背景の指定が反映されない

例示

<style type="text/css">
span {
  background: aqua;
  font-weight: bold;
}
</style>

<p>前前前
<span style="margin:1em;">マージン</span>
後後後</p>
<p>前前前
<span style="border:2px solid blue;">ボーダー</span>
後後後</p>
<p>前前前
<span style="padding:1em;">パディング</span>
後後後</p>

前前前 マージン 後後後

前前前 ボーダー 後後後

前前前 パディング 後後後

それぞれのプロパティを指定した場合の、表示上の違いを比べています。

スクリーンショット

N7N7.1での表示

NN4NN4.8での表示

補足

マージンまたはパディングを設定したときにインラインレベル要素が上にずれるバグは、その要素にボーダーも指定することで回避できます。ただし、要素の前後に改行が入るバグは回避できません。

修正状況

NN4.8で不具合の発生を確認しました。

関連記事

スポンサーリンク

od バイナリ・ファイルの内容を閲覧する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る