В кои-то веки сподобился и раскурил/запилил сабж у себя в блоге. Который вы, вероятнее всего уже заценили в сентябрьской рассылке моего неуютного. Если честно, то в самом страшном сне не мог предположить такое количество костылей по решению такой, казалось бы простой на первый взгляд задачи, как адаптивные шаблоны писем. Под катом — тот самый список проблем, а также существующие (известные мне) на данный момент способы их решения. Ну и конечно сам шаблон верстки. Собственно этим постом я решил открыть небольшую серию, в которой буду делиться наработками из серии «чота гавнякал, чтоб не забыть — вот». Бесплатно и без смс 🙂
Проблема: почтовый клиент удаляет media queries из тела письма
Решение: используйте таблицы (да-да, те самые html-таблицы)
Проблема: почтовый клиент удаляет внешние CSS стили
Решение: вставляйте CSS стили инлайном
Проблема: почтовый клиент игнорирует теги <style> или <link> в секции <head>
Решение: вставляйте каскадные стили непосредственно для каждого элемента (facepalm)
Проблема: почтовый клиент не поддерживает padding, margin, float и paragraph
Решение: используйте вложенные таблицы, каждый TD которых будет иметь свой padding и margin
Проблема: почтовый клиент подчеркивает и подсвечивает ссылки синим по умолчанию
Решение:
<a href="https://ivangrigoryev.com/the-unforgotten-soldiers-an-anzac-tribute/" style="text-decoration:none; color:#00001b">Read More</a>
И наконец, сам шаблон адаптивной верстки для email рассылок (в одну колонку):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!--<![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{title}</title>
<!--[if (gte mso 9)|(IE)]>
<style type="text/css">
table {border-collapse: collapse;}
</style>
<![endif]-->
</head>
<body style="margin: 0 !important;padding: 0;>
<center style="width: 100%;table-layout: fixed;-webkit-text-size-adjust: 100%;-ms-text-size-adjust: 100%;">
<div style="max-width: 640px;margin: 0 auto;">
<!--[if (gte mso 9)|(IE)]>
<table width="640" align="center">
<tr>
<td>
<![endif]-->
<table align="center" style="Margin: 0 auto;width: 100%;max-width: 640px;">
<tr>
<td style="text-align: left;">
<table width="100%">
<tr>
<td>{content}</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</div>
</center>
</body>
</html>
А также пример «было»:
И «стало» для десктопа:
Скриншот «стало» для мобильной версии GMail и Яндекс разместил в самом верху.
Мотофотопрограммист
Живу в Новой Зеландии. Рассказываю о стране и красивых местах, пишу про бытовые вещи.
Прыгнуть с парашютом - осуществил на 50%; приобрести 1400 - работаю над этим; осилить 300км/ч - осилил на 96.6%