【制作裏話】HTMLメールで崩れが発生!~たった1pxの画像を表示するには~

マーケティングブログ

冒頭マンガ

突然ボーダーが見えなくなった!

以前、特定のメーラーでのみボーダーが見えなくなったことがあったっぴ。

おかめアイコン
新人アイコン

ボーダー?

そうっぴ。そこには高さ1pxの画像があったのだけど、それがつぶれて白い線状で表示されたっぴね。

おかめアイコン

sample

こんな感じに表示するはずが…。

おかめアイコン

sample

このようになってしまったっぴ。…わかるっぴ?

おかめアイコン
新人アイコン

はい、線が消えてますね!

sample

ちなみにこの画像の構成はこんな感じっぴ。消えた部分は⑤と⑧の高さ1pxの画像っぴ。

おかめアイコン
新人アイコン

高さ1pxだけの画像をわざわざ入れていたんですね…?

流し込みのテキストで表現したい箇所があったから、確かに少し特殊な構成、………ぴ。

おかめアイコン
新人アイコン

確かに特殊というか、ややこしい構造…?それでこの崩れた時はどうしたんですか?

結果からいうと、追加のタグを入れることでその時は表示されるようになったっぴ。ただその約一年後にもう一度修正が入ったっぴ。

細かい経緯は覚えていないけど、改めて検証したら1回目の修正内容だとボーダーが表示されなかったっぴ。

だからたぶん、アップデートか何かで再び崩れが生じて、対応したんだったと思うっぴ。

おかめアイコン
当時の検証環境

◆PC
 ┗ Windows:Webメーラー3種、メールアプリ5種
(Becky!、Gmail(Chrome)、Yahoo!メール、Outlook.com、Outlook2010、2013、2016)
 ┗ Mac:デフォルトMail
◆スマートフォン
 ┗iOS10、iOS11、Android6、Android7、Android8
修正前のボーダー部分コーディング内容

<tr>
<td><div style="margin: 0 auto;line-height:0;">
<img src="https://dir.directus.jp/mailmagazine/kensho/blog/images/img_05.gif" width="650" height="1" style="display: block;"></div>
<td>
<tr>

一回目修正後のボーダー画像部分コーディング内容

<tr>
<td style="font-size:0;line-height:0;" height="1">
<img src="https://dir.directus.jp/mailmagazine/kensho/blog/images/img_05.gif" width="650" height="1" style="display: block;">
<td>
<tr>

二回目修正後のボーダー画像部分コーディング内容

<tr>
<td style="font-size: 0;line-height:0;mso-line-height-rule:exactly; mso-line-height-alt:1px; " height="1">
<img src="https://dir.directus.jp/mailmagazine/kensho/blog/images/img_05.gif" width="650" height="1" style="display: block;">
<td>
<tr>

検証・修正時期2018年2月~2019年4月

やはり、こまめな検証は必須

こんな感じで、今までは問題なかった記述でも、崩れが発生する可能性があるっぴね。

おかめアイコン
新人アイコン

は~成る程。………やはりこまめな検証は必要なんですね。

ぴ。
ちなみに二回目の修正で追加した「mso-line-height-rule:exactly; mso-line-height-alt:1px;」というタグは、Outlookメール用のタグっぴ。
Outlookのレイアウト表示は、「line-height: 0;」 を “行ボックスが0” と解釈して描画を省いてしまうので、これを入れることでOutlookメールでも1pxの高さを確保できるようにしてるっぴ。

特にOutlookは特有の問題があるぴ、注意が必要っぴね。

おかめアイコン
新人アイコン

特有?

……まあ、詳しくはまた次回…以降か………いずれっぴ(たぶん)

おかめアイコン