Основные правила верстки Email писем для почтовых рассылок

Небольшой материал с основными правилами, которые мы учитываем при верстке писем для различных e-mail рассылок под разные устройства.

1. Используем табличный подход к вёрстке.

2. Избегаем сокращений CSS и используем полный код:

padding-left: 5px; padding-right: 5px; padding-top: 5px; padding-bottom: 5px

3. Используем полный HEX для цветов — #bb0000.

4. Не используем сокращённые варианты записи шрифта типа font: 12px arial;.

5. Используем вложенные таблицы без использования colspan и rowspan.

6. Атрибуты cellpadding и cellspacing ставим в 0.

7. Для атрибута border у таблиц table используем только 0.

8. Для line-height используем только пиксели.

9. Используем тег <br> для вставки разрывов между блоками текста вручную.

10. Используем текст предварительного заголовка (прехедера), который выводится рядом с заголовком (темой) письма:

<div style="font-size: 0px; font-color: #ffffff; opacity: 0; visibility: hidden; width: 0; height: 0; display: none;">текст прехедера</div>

11. Используем кодировку UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

12. Прописываем alt у изображений, т.к. без изображений письмо должно всё-равно отображаться.

13. Желательно background и bgcolor использовать только для тега table.

14. Электронную почту и телефон оборачиваем сами в ссылку <a href=" ... ">...</a> и задаем стили, чтобы почтовики свои стили не использовали.

Важно! Не используем JavaScript, Flash, , SVG.

15. Для решения проблемы с автомасштабированием писем в iOS 10 и iOS используем (не даёт устройствам на iOS изменять контент письма для удобства чтения):

<meta name="x-apple-disable-message-reformatting">

или CSS:

-webkit-text-size-adjust:none; -ms-text-size-adjust: none;

16. Используем стандартные шрифты, типа Arial, Verdana, Tahoma, Times New Roman.

17. Не используйте относительные ссылки (/path) и ссылки без протокола (//site.ru/path), ссылки должны содержать протокол и имя хоста (https://site.ru/path), так как в них протоколом по умолчанию может быть file://.

18. Отказываемся от http:// в пользу httрs://.

19. Не используем внешние сокращатели ссылок типа vk.cc, bit.ly и подобные.

20. Указываем у ссылок атрибут target="_blank", чтобы ссылка всегда открывалась в новом окне или вкладке. Поведение на разных ОС и сервисы которыми открываются ссылки могут быть разными и непредсказуемыми.

21. Прописываем атрибут title у всех ссылок.

22. Сокращаем длину кода, чтобы размер не превышал 102 КБ и 100 КБ, т.к., например, веб-интерфейсы Gmail и Yahoo обрезают письмо.

23. Используем одну колонку.

24. Колонка желательно должна быть не шире 500–600 пикселей, иногда делают до 700 пикселей.

25. Область кнопок и ссылок — 44 x 44 пикселя.

26. минимальный отображаемый на iPhone шрифт — 13 пикселей.

27. Используем display: none; для скрытия необязательных элементов.

28. Для мобильных используем отдельные медиа-запросы (media queries), они сейчас вполне поддерживаются:

<style type="text/css">
    @media only screen and (max-device-width: 480px) {
        /* сюда пишутся стили для мобильных платформ */
    }
    @media only screen and (min-device-width: 320px) and (max-device-width: 480px) { … }
    /* сюда пишется CSS для десктопа */
</style>

Используем больше запросов в случае необходимости:

@media screen and (device-width: 480px) and (device-height: 360px), screen and (device-width: 360px) and (device-height: 480px), screen and (device-width: 320px) and (device-height: 240px) { ... }

29. ширина дисплея предыдущих моделей iPhone 480px (портретный режим)

30. Вариант для двух колонок может быть таким:

<table width="640" border="0" cellpadding="0" cellspacing="0">
<tr>
    <td>
    <table width="320" border="0" cellspacing="0" cellpadding="20" align="left">
      <tr>
        <td><p>Column Left Content</p></td>
      </tr>
    </table>
    <table width="320" border="0" cellspacing="0" cellpadding="20" align="right">
      <tr>
        <td><p>Column Right Content</p></td>
      </tr>
    </table>
    </td>
  </tr>
</table>

Добавляем медиа запрос для мобильных с классом:

<style type="text/css">
    @media only screen and (max-device-width: 480px) {
        table[class=contenttable] { 
            width:320px !important;
        }
    }
</style>
<table width="640" border="0" cellpadding="0" cellspacing="0" class="contenttable">

31. На мобильных устройствах скрываем под кат элементы — «progressive disclosure» (рус. —  «прогрессивное раскрытие»). Примерное использование ниже:

<td>
   <h4><a href="http://yourdomain.com" class="link">First heading</a></h4>
   <a href="#" class="mobilehide">Hide</a> <a href="#" class="mobileshow">Show</a>
   <div class="article">
      <p class="bodytext">
         <img src="kitten.jpg" style="float: left;" >Pellentesque habitant morbi...
      </p>
      <a href="http://yourdomain.com">Read more...</a> 
   </div>
</td>

Стили:

a[class="mobileshow"], a[class="mobilehide"] {
    display: none !important;
}

@media only screen and (max-device-width: 480px) { 
    a[class="mobileshow"], a[class="mobilehide"] { 
        display: block !important; 
        color: #fff !important; 
        background-color: #aaa; 
        border-radius: 20px; 
        padding: 0 8px; 
        text-decoration: none; 
        font-weight: bold; 
        font-family: "Helvetica Neue", Helvetica, sans-serif; 
        font-size: 11px; 
        position: absolute; 
        top: 25px; 
        right: 10px; 
        text-align: center; 
        width: 40px;
    }
    div[class="article"] {
        display: none;
    }
    a.mobileshow:hover { 
        visibility: hidden;
    } 
    .mobileshow:hover + .article, .article:hover {
        display: inline !important;
    }
}

32. Фоновые изображения нужно по возможности избегать.

33. Изображения лучше всего использовать разные под разную ширину устройств, или использовать такой вариант.

CSS:

@media only screen and (max-device-width: 480px) {
    td[class="headercell"] {
        background-image: url(images/header-325.png);
        width: 325px !important;
        height: 115px !important;
    }
    td[class="headercell"] img { 
        display: none; 
    }
}

HTML:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
   <tr>
      <td class="headercell">
        <img src="images/header.png" border="0" width="600" />
    </td>
   </tr>
</table>

34. Под Retina-дисплеи мы используем изображения, которые изначально в два раза больше, чем отображаемые. Как пример, при размере изображения 650 на 230 пикселей мы используем:

@media only screen and (max-device-width: 480px) {
    td[class="headercell"] {
        background-image: url(images/header-650@2x.png) !important;
        background-size: 325px 115px;
        width: 325px !important;
        height: 115px !important;
        }
    td[class="headercell"] img { 
        display: none; 
        }
    }
}

35. Для Retina можно использовать с большой осторожностью:

@media all and (min-device-pixel-ratio : 1.5) { … }

36. Используем метатег viewport, чтобы не было неконтролируемого зума.

<meta name = "viewport" content = "width = device-width, user-scalable = no" />

37. Разрыв строки желательно делать через 60–65 символов текста.

38. Для писем используем свой DOCTYPE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Опубликовано 11 августа 2024 в 22:53
Обновлено 11 августа 2024 в 22:53
Категория: Блог
Теги: , ,