Меню

Как сверстать адаптивное письмо?

Показываем, как «ломаются» письма и рассказываем, как этого избежать ещё на этапе вёрстки.

Адаптивность — возможность письма подстраиваться под ширину экрана на разных устройствах, в том числе мобильных. Так, чтобы картинки были оптимального размера, текст оставался читабельным и полоса прокрутки не мешала восприятию.

Важно создавать адаптивные письма, чтобы не потерять внимание пользователя, а вместе с ним — потенциальную покупку.

В «сломанном» письме клиенту неудобно нажимать на кнопки и читать текст. А товар, который должен быть представлен максимально выгодно, может потерять в имидже или вовсе исчезнуть из поля зрения, «мигрировав» за пределы экрана.

Принципы адаптивной вёрстки

При разработке сайтов мы используем блочную вёрстку. В письмах — табличную: элементы распределяются по строкам и ячейкам с помощью тегов HTML tr и td, атрибут align отвечает за выравнивание. Прописываем стили внутри тегов и работаем с резиновой вёрсткой и медиа‑запросами. Не по отдельности, а вместе, сочетая оба подхода.

Начинающие верстальщики часто забывают про таблицы и используют блочную вёрстку. Из‑за этого она «слетает», а письмо отображается некорректно. 

Это происходит потому, что большинство почтовых клиентов не видят внешние стили. Поэтому, если вы прописали стили отдельно, а потом подключили их к блокам — письмо попросту сломается в одном из ключевых мест.

А ещё важно помнить, что половина почтовых клиентов не видит медиа‑запросы. 

Вот эти почтовики не работают с таблицами стилей и «вырезают» медиа‑запросы из вёрстки, прописать их в инлайне — нельзя.

Gmail AppMail.ru AppYandex App
Mailbox AppYahoo AppWindows Phone

Чтобы решить эту проблему, сочетайте резиновую вёрстку и медиа‑запросы. Так письма не будут сжиматься до нечитаемого состояния, а картинки не выйдут за рамки просмотра. Даже в почтовых клиентах, не поддерживающих медиа‑запросы.

Что ломается чаще всего и как это исправить

Пройдёмся по тем блокам, которые ломаются в письмах чаще всего и нуждаются в особом внимании.  

Делаем блоки письма адаптивными

В адаптивной вёрстке элементы рассылки на экране мобильного перестраиваются друг под друга автоматически.

Два перестраивающихся блока — это два блока div, которым задано свойство display со значением inline. Оно определяет, что элемент будет отображаться как встроенный инлайн‑блок. 

Инлайн‑блоки занимают всю ширину контейнера. Если использовать ширину письма в 600px, то два одинаковых контейнера будут по 300px. Вот пример HTML кода:

<table width="100%" border="0" cellspacing="0" cellpadding="0">

    <tr>
        <td align="center" valign="top" style="font-size: 0px;">
            <!--Item -->
            <div style="display: inline-block;vertical-align:top;width:300px;">

                <table width="100%" border="0" cellspacing="0" cellpadding="0"
style="border-collapse:collapse;">

                    <tr>
                        <td align="center" valign="middle" style="font-size: 14px;">

                            <table width="100%" border="0" cellspacing="0" cellpadding="0">

                                <tr>
                                    <td align="center" valign="top">

                                        контент

                                    </td>
                                </tr>

                            </table>

                        </td>
                    </tr>

                </table>
            </div><!-- Item END--><!--[if (gte mso 9)|(IE)]>

            </td>

            <td valign="top" style="width: 300px;">

            <![endif]-->
            <!-- Item -->
            <div style="display: inline-block;vertical-align:top;width:300px;">

                <table width="100%" border="0" cellspacing="0" cellpadding="0"
style="border-collapse:collapse;">

                    <tr>
                        <td align="center" valign="middle" style="font-size: 14px;">

                            <table width="100%" border="0" cellspacing="0" cellpadding="0">

                                <tr>
                                    <td align="center" valign="top">

                                        контент

                                    </td>
                                </tr>

                            </table>

                        </td>
                    </tr>

                </table>
            </div><!-- Item END-->

        </td>
    </tr>

</table>

Обратите внимание на значение атрибута width, которое в теге table определяет ширину таблицы. Cellpadding и cellspacing мы обнуляем, а td align задаём center. 

Что еще важно: в атрибуте style для свойства border-collapse задано значение collapse — это необходимо, чтобы все смежные границы выглядели как одна. Эффект, немаловажный с точки зрения отображения email на экранах разных устройств.

Закрывает код первого блока нашего письма условный комментарий для Outlook, чтобы он увидел закрывающий тег td в первом контейнере. 

Второй блок будет почти таким же, и здесь мы тоже используем условный комментарий для Outlook. Вот так будет выглядеть таблица.

контентконтент

А если экран сузится даже на пиксель, блоки в письме сами перестроятся.

контент
контент

Если вы хотите задать разную ширину ячеек, рекомендуем для использования этот код:

<table width="100%" border="0" cellspacing="0" cellpadding="0">

    <tr>
        <td align="center" valign="top" style="font‑size: 0px;">
            <!-- Item -->
            <div style="display: inline‑block;vertical‑align:top;max‑width:400px;width:100%">

                <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border‑collapse:collapse;">

                    <tr>
                        <td align="center" valign="middle" style="font‑size: 14px;">

                            <table width="100%" border="0" cellspacing="0" cellpadding="0">

                                <tr>
                                    <td align="center" valign="top">

                                        контент

                                    </td>
                                </tr>

                            </table>

                        </td>
                    </tr>

                </table>
            </div><!-- Item END--><!--[if (gte mso 9)|(IE)]>

            </td>

            <td valign="top" style="width: 200px;">

            <![endif]-->
            <!-- Item -->
            <div style="display:inline‑block;vertical‑align:top; width:200px">

                <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border‑collapse:collapse;">

                    <tr>
                        <td align="center" valign="middle" style="font‑size: 14px;">

                            <table width="100%" border="0" cellspacing="0" cellpadding="0">

                                <tr>
                                    <td align="center" valign="top">

                                        контент

                                    </td>
                                </tr>

                            </table>

                        </td>
                    </tr>

                </table>
            </div><!-- Item END-->

        </td>
    </tr>

</table>

Теперь наша таблица базово выглядит так:

контентконтент

А когда письмо придёт на смартфон, она станет такой:

контент
контент

Принцип вёрстки писем «от двух колонок к одной»

Двухколоночный шаблон даёт возможность представить больше контента в верхней части сообщения, отображаемого на декстопе. Но затем, при переходе к мобильной версии, это преимущество теряется, а вместо него появляются проблемы с отображением. Однако можно адаптировать две колонки, превратив их в одну.

Этот популярный принцип отлично сочетается с адаптивной вёрсткой. Выбрать двухколоночный шаблон — хорошее решение не только при вёрстке статьи для сайта. Он подойдёт и при оптимизации почтовой рассылки для разных веб‑интерфейсов, в том числе для экранов мобильных устройств. Благо есть инструменты для создания адаптивного шаблона письма без длинных CSS в медиа‑запросах. 

Как известно, при вёрстке писем лучше отказаться от CSS и предпочесть HTML везде, где это возможно. Почтовые клиенты по‑разному ведут себя с CSS и отличаются по степени его поддержки. А вот со стандартным HTML мы получаем гораздо более предсказуемый результат.

К примеру, такие атрибуты, как align=”left” и cellpadding=”10” можно назвать куда более надежными, чем их эквиваленты в CSS: float: left; или padding: 10px;. На эти атрибуты и следует опираться, если вы планируете верстать письмо по принципу «от двух колонок к одной».

Адаптируем изображения

Сразу — к примеру. Баннер без адаптива просто уменьшается пропорционально экрану смартфона. Прочитать текст на такой картинке — нереально. А все основные мысли в заголовках моментально теряют свою значимость. Печально, когда весь процесс работы над письмом обнуляется и результаты не смотрятся.

Вот пример письма от PichShop. Блоки письма просто‑напросто уменьшились в мобильной версии. А тексты ниже картинок стали практически нечитаемыми из‑за бардака в пределах одного экрана.

Расскажем, как заверстать изображения в письме

Здесь работает простой принцип: для всех изображений шириной больше 300px лучше не прописывать фиксированную высоту. 

Когда высота не прописана в коде, система самостоятельно её вычислит пропорционально размеру картинки. 

Если ваша картинка больше 300px, в стилях мы прописываем ширину в процентном соотношении (100%) и максимальную ширину картинки img (600px), используя резиновый подход:

<span style="font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 16px;color:#000000;">

    <img src="creative-main.png" width="600" alt="Альтернативный текст" border="0"
     style="display: block; width: 100%; max-width: 600px"/>

</span>

Десктопные версии (в том числе Outlook) увидят запись width=»600″ и покажут баннер шириной 600px. Google считает запись width: 100%; max-width: 600px и отобразит изображение на всю ширину, но не более 600px. Так получится масштабирование изображения, которое не помешает адаптироваться всему остальному контенту письма.

Не забудьте в alt прописать альтернативный текст. 

Ещё один важный момент: устройства на iOS могут видоизменять контент для удобства чтения, что частенько рушит планы авторов имейл‑рассылок. Нередко это противоречит дизайну, а может и вообще поломать вёрстку письма. Избежать неприятных последствий можно, прописав в коде следующую комбинацию: html { -webkit-text-size-adjust:none; -ms-text-size-adjust: none;}

А чтобы избавиться от обычных проблем с автомасштабированием писем в iOS 10 и iOS 11, нужно добавить в код такую строчку: <meta name=»x-apple-disable-message-reformatting»>

Пара небольших штрихов в коде — и всё готово к полноценному отображению письма вне зависимости от модели смартфона.

Прикручиваем кнопки

Вот как мы масштабируем кнопки в мобильной версии так, чтобы они растянулись на весь экран.

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="width: 100%;">

    <tr>
        <td align="center" valign="middle" height="50" bgcolor="#000"
            style="height: 50px; display: block; background-color: #000000;">

            <!--[if gte mso 9]>

            <table border="0" cellspacing="0" cellpadding="0">

                <tr>
                    <td nowrap align="center" valign="middle" height="50" style="padding: 0 30px;">

            <![endif]-->

            <a href="#" target="_blank"
               style="font-family: Arial, Helvetica, sans-serif; font-size: 24px; line-height: 50px; color: #ffffff; white-space: nowrap; font-weight: normal; text-decoration: none; display: block; padding: 0 30px;">

                Текст кнопки

            </a>

            <!--[if gte mso 9]>

            </td></tr>

            </table>

            <![endif]-->

        </td>
    </tr>

</table>

Height и line-height здесь одинаковые, также как background и bgcolor. Target задано свойство _blank — специально для того, чтобы страница загружалась в новом окне браузера.

Главное, что нужно знать: высота строки должна соответствовать высоте кнопки, а её текст должен быть меньше 300px в ширину. Если будет больше — текст сломает адаптацию или вылезет за пределы кнопки.

Не забываем, что кнопки в письмах должны быть разными

Не правда ли, удобно, когда получатель письма может позвонить по указанному телефону прямо из email, не копируя номер? Это заметно сокращает дистанцию между клиентом и компанией. 

Такие кнопки повышают вероятность того, что клиент захочет обратиться за услугой, пока впечатления от полученного в письме предложения ещё свежи. Кнопка «Позвонить» предлагает ему моментальное и простое движение. Оно поможет стать ближе к желаемому за считанные секунды и без лишних сложностей.

Однако кнопка «Позвонить» используется только в мобильной версии и не нужна, если письмо просматривается с компьютера. Поэтому лучше создать две кнопки: одну, со звонком, для смартфона, вторую — для десктопа. Во втором случае приглашаем перейти по ссылке и меняем CTA, закладывая следующие действия: «Посмотреть», «Перейти на сайт» и другие.

Адаптируем письмо к тёмной теме

Какая бо‑о-оль, какая бо‑о-оль 🙂 Часто верстальщики не учитывают, что пользователь может использовать тёмную тему приложения. 

И тогда текст просто‑напросто теряется на фоне, и клиент не видит часть информации из письма. Вот так:

Если фон верстается картинкой, то происходит инверсия цвета текста. Это может повлиять на его читаемость. Некоторые почтовики делают прямую инверсию «белый — чёрный», а некоторые «подбирают» тёмный аналог. 

Важно: разные почтовики по‑разному работают с тёмной темой, и результат будет отличаться. 

Рассказываем, какой должна быть адаптивная вёрстка письма, чтобы стиль инвертировался:

1. Стоит сообщить почтовику, что ваши имейлы поддерживают тёмную тему. В HTML-коде добавьте метатеги в тег <head>:

<meta name="color-scheme" content="light dark">

<meta name="supported-color-schemes" content="light dark">

2. Настройте почтовики, которые поддерживают кастомизацию писем. Используйте медиазапрос в <head>:

@media (prefers-color-scheme: dark) { }

3. Поменяйте цвет шрифтов и фона. Тёмный текст сделайте светлым, а светлый фон — наоборот, тёмным:

@media (prefers-color-scheme: dark) {

    .copy {

        background-color: #222222;

        color: #eaeaea;

    }

}

4. Можно добавить один логотип для светлой темы почты, а другой — для тёмной. Для этого пропишите в коде два варианта логотипа и задайте CSS с помощью атрибута class, чтобы каждый из лого отображался корректно:

<img class="light-img" src="logo-light.png" alt="">

<img class="dark-img" src="logo-dark.png" alt="" style="display: none;">

@media (prefers-color-scheme: dark) {

    .img_light { display: none !important; }

    .img_dark { display: block !important; }

}

Некоторые почтовики позволяют заменять изображения, но могут не заменить некоторые цвета. Учитывайте это и обязательно тестируйте письмо перед финальной отправкой.

И ещё несколько моментов

Собрали для вас список полезных советов, которые рекомендуем держать в уме, если вы собираетесь начать верстать письма. У профессионалов опора на эти принципы обычно доведена до автоматизма, но новичкам бывает нелегко удержать в голове сразу всё.

  1. Структура таблиц должна быть максимально простой, а код — легко читаться.
  2. Идеальный код письма не должен весить более 100 КБ — в противном случае  некоторые веб‑интерфейсы могут его обрезать, представив не в лучшем виде. К примеру, почта Google.
  3. Вместо объединения ячеек (colspan, rowspan) в письмах лучше предпочитать вложенные таблицы.
  4. Добавляем и горизонтальное, и вертикальное выравнивание. Их нужно задавать явно, поскольку значения по умолчанию у разных почтовых клиентов могут варьироваться. 
  5. То же касается отступов. По горизонтали лучше его делать с помощью пустой ячейки с неразрывным пробелом, левый и правый отступы — создавая вложенные таблицы меньших размеров.
  6. Не забывайте обнулять значения атрибутов cellpadding, cellspacing и border у таблицы.
  7. Если высота таблицы превышает 1800 пикселей, в Outlook могут образовываться «разрывы» страниц. Это выглядят как пустое пространство, разрывающее таблицу или изображение.
  8. Не переусердствуйте с отбивкой вложенных элементов, переносом строк и растягиванием блоков в высоту. В идеале высота логического блока письма должна быть равна высоте одного экрана.

После того, как вы сверстали код письма, придётся проверить размер получившегося HTML-файла. Если он слишком велик, попробуйте его уменьшить. Результат даст такой способ: откажитесь от символов табуляции, переноса строк и комментариев.

А можно адаптировать письма без кода?

Можно! Для этого используйте конструктор электронных писем Letteros — он возьмёт работу на себя. Просто выбирайте подходящий шаблон email и смотрите, как здорово письма будут выглядеть на разных устройствах благодаря адаптивной вёрстке. И всё это — не тратя лишнее время.

Letteros — это модульный редактор, благодаря которому можно создать вёрстку шаблона письма без профильного специалиста или знаний HTML. 

Платформа показывает, как письмо будет выглядеть на 100+ смартфонах, а встроенные сервисы сразу проверяют письмо на ошибки.

Итог: рассылка выглядит красиво и на десктопе, и в мобильных почтовиках. Также прямо в Letteros можно перевести текст на любой другой язык, автоматически «подтянуть» превью к видео в письме и быстро перестраивать блоки между собой. 

Посмотрите демо и переходите на Letteros. Здесь на создание писем уходит всего 15–20 минут.

Кстати, если нужно, мы бесплатно поможем перенести ваши шаблоны писем в конструктор. А наша поддержка всегда будет на связи и подскажет, как использовать Letteros с максимальной эффективностью.

Советуем почитать