If gte mso 9 что это
Перейти к содержимому

If gte mso 9 что это

  • автор:

По-настоящему адаптивные письма. Часть… снова первая

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

К чему мы приходим:
— Использование внешних стилей и последующий прогон кода через инлайнер. Из-за усложнения кода это стало целесообразным
— Улучшение семантики через именование классов и сокращение участков кода
— Частичная поддержка the Bat! Хотя Николь на него забила.
— Полная поддержка всех мобильных почтовых клиентов
— Использование ранее опасных конструкций. Благодаря усердному тестированию проблемы решены.

Обертка

Давайте обрисуем новую обертку письма(Github):
Скрытый текст

   


— Блок .wrapper является общей оберткой с указанием цвета фона, посему задаем ему фон и несколько css свойств для избежания непредсказуемого поведения.

— Таблица .newsletter — непосредственно отцентрированное письмо. Для его родителя .wrapper мы указали значение center для атрибута align, чтобы в yahoo mail наша таблица была отцентрирована. Стоит понимать, что в будушем для выравнивания любых таблиц необходимо оборачивать их дивами с указанным выравниванием. При этом не забываем указывать выравнивание для самой таблицы. Для .newsletter мы указали ширину в 100% через инлайн для верности, при этом указали max-width:600px для получения адаптивности. Но это свойство не работает в аутлуке и в the bat! Для решения проблемы с аутлуком мы нарисовали дополнительную таблицу, которая является родителем нашего .newsletter.

— Ячейка .content уже является частью письма. Для нее мы указали background-color:#ffffff в сss для задания белого фона письма в отличие от серого фона подложки. Мы явно указали width:600px !important; для решения проблемы the bat!, который не поддерживает max-width, получив 600px ширину письма в бате.

Результат мы видим на скриншоте выше. При этом мы можем спокойно дергать края браузера для тестирования адаптивности нашей верстки.

Контент

А теперь давайте добавим немного контента нашему письму(Github)
Скрытый текст

   


– Lorem ipsum dolor sit amet, consectetur adipiscing elit

И разберем все по порядку.

Заголовок

.h1 < font-family: arial; font-size: 24px; color:#666666; line-height:1.2em; >
Paragraph Heading

Используется именно div без задания margin для избежания появления лишних отступов для блоков, у которых указан верхний padding.

Абзац

p < margin:1em 0; font-family: arial; font-size:14px; color:#666666; line-height:1.4em; text-align: left; >.paragraph < font-family:arial; font-size:14px; color:#666666; line-height:1.4em; text-align: left; >

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Обращаю внимание на то, что для тега абзаца мы явно указываем margin. Это необходимо для пересчета отступов в outlook.com. Там они кардинально отличаются от дефолтных. Тег параграфа идеально использовать вместе с предыдушим вариантом заголовка.

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

Ссылка

Конструкция ссылки всегда должна содержать внутри span, если ссылкой является текст. Это костыль для аутлука. Мы задаем цвет ссылки и такой же цвет для внутреннего span. Явное задание декорирования цвета необходимо для мобильного gmail, который снимает подчеркивания у ссылок. Для изображений ссылок мы сразу устанавливаем нулевой border.

Кнопка

Конструкция кнопки немного громоздка, но тем не менее железобетонна. В первую очередь наша кнопка — это инлайновый, а не блочный элемент, что позволяет нам размещать несколько кнопок рядом друг с другом. Для того, чтобы иметь возможность использовать адекватный border-radius для кнопки таблицу внутри кнопки надо обязательно сепарировать. Остальное по примеру ссылки. Немного офрормления и кнопка готова. Важное замечание. Наша кнопка имеет свойство схлопываться в две строчки, если ее название состоит из двух слов, поэтому я использую неразрывный пробел для лечения этой проблемы. В качестве альтернативы можно использовать фиксированную ширину ячейки таблицы. Для выравнивания кнопок используется родительский div с явно заданным выравниванием.

И наконец, список

О нем я уже писал в предыдущем топике И не буду повторять подробности. Я лишь просто покажу как его оформлять лучшим образом. Никакого лишнего CSS. Все предельно просто.

Так как хабрапарсер жрет юникод символы, я вставлю пример кода скриншотом.

На этой ноте я закончу «снова первую часть», а в следующей расскажу как оформить другие части письма, а также приведу примеры мультиколоночности. Для тех, кто скажет «Какого хрена? Ведь в предыдущей статье было тоже самое!» отвечу, что разница огромна. Чтобы прийти к этому подходу мне понадобилась неделя множественных тестов, проб и ошибок.

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

UPD2: Всплыли баги в мобильном yahoo клиенте. О решении обязательно напишу апдейтом к этому топику или в следующих частях.

UPD3: Баги Yahoo решены. Мобильное приложение yahoo не понимает свойства cellpadding у таблиц, следовательно мы должны указывать отступы ячеек через стили. Также в yahoo скукоживались инлайн кнопки. В качестве панацеи используется фиксированная ширина для кнопки. Не так круто, как хотелось бы, но что поделать.

В рамках нашего сегодняшнего материала необходимо добавить следующий CSS

.content < padding:30px; >.button

If gte mso 9 что это

Далее идет таблица стилей которая содержит
mso-style-next:Normal;
mso-pagination:widow-orphan;
.
и так далее.

Перерыл инет но так ничего и не понел что это такое MSO?

Может кто знает где можно подробно прочитать про все это?

Re: [if gte mso 9] - Что это!?

От: night
Дата: 14.10.05 07:33
Оценка: +1

Здравствуйте, leksaa, Вы писали:

L>Может кто знает где можно подробно прочитать про все это?

L>СПАСИБО!

это MS Office имхо.

сохрани текст из Word'a, в формате HTML, он тебе еще и не такое навставляет

Re[2]: [if gte mso 9] - Что это!?

От: leksaa www.mbfbm.ru
Дата: 14.10.05 07:39
Оценка:

N>это MS Office имхо.

N>сохрани текст из Word'a, в формате HTML, он тебе еще и не такое навставляет 🙂

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

Re: [if gte mso 9] - Что это!?

От: DrZubr
Дата: 14.10.05 07:43
Оценка: 1 (1)

Здравствуйте, leksaa, Вы писали:

L>Привет, ВСЕМ!

L>Тут переделываю код одного сотрудника и встретился с таким кодом:
L>

У нас разные интеренты? L>Может кто знает где можно подробно прочитать про все это?

Стили для MS Office.

ICQ [168117153] Re[2]: [if gte mso 9] - Что это!?
От: leksaa www.mbfbm.ru
Дата: 14.10.05 07:54
Оценка:

DZ>Стили для MS Office.

Для чего их пихают на WEB-сайты?

Re[3]: [if gte mso 9] - Что это!?
От: Oyster https://github.com/devoyster
Дата: 14.10.05 08:00
Оценка:

Здравствуйте, leksaa, Вы писали: L>Для чего их пихают на WEB-сайты?

Да просто страничку в офисе сделали имхо. А вот про "if gte . ": Re: <!--[if . ]>

Автор: anonymous
Дата: 08.07.05 Re[4]: [if gte mso 9] - Что это!?
От: leksaa www.mbfbm.ru
Дата: 14.10.05 08:10
Оценка:
Re[3]: [if gte mso 9] - Что это!?
От: DrZubr
Дата: 14.10.05 08:16
Оценка:

Здравствуйте, leksaa, Вы писали:

DZ>>Стили для MS Office. L>Для чего их пихают на WEB-сайты?

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

ICQ [168117153] Re[3]: [if gte mso 9] - Что это!?
От: Кодт
Дата: 17.10.05 10:57
Оценка:

Здравствуйте, leksaa, Вы писали: N>>это MS Office имхо.
N>>сохрани текст из Word'a, в формате HTML, он тебе еще и не такое навставляет L>Да это я уже понел что hmtl был сгенерирован посредством MS Office.
L>Но для чего такие файлы в инет выкладывать, они же много весят да и стили то эти не использую при просмотре этого файла в браузере!

Зато ты можешь с минимальными потерями воссоздать офисный документ из этого html.

Но чаще всего — это результат небрежности. HTML, порождаемый офисом, содержит уйму грязи — начиная от большого количества не нужных браузеру символов (табуляция и комментарии с метаданными) и кончая кривой разметкой (прибитыми шрифтами, размерами абзацев, кучей стилей на каждое отдельное форматирование — и скажи спасибо, если они оформлены как классы, а не инлайнятся во все DIV и SPAN).
Далеко не все авторы веб-страничек озабочены тем, чтобы вычистить весь этот хлам (по незнанию или по лени — не суть).

Перекуём баги на фичи! Re[4]: [if gte mso 9] - Что это!?
От: Пацак
Дата: 17.10.05 12:23
Оценка:

Здравствуйте, Кодт, Вы писали: К>Далеко не все авторы веб-страничек озабочены тем, чтобы вычистить весь этот хлам (по незнанию или по лени — не суть).

ИМХО есть еще один вариант/категория таких страничек — вставленная копипастом через какую-нибудь чудо-CMS. То есть людям сказали, что теперь занести инфу на сайт может даже секретарща — и они поняли это буквально: посадили секретаршу, она верстает доки в ворде, сохраняет в хтмл, а потом копипастит из в CMS. Без верстки, без чистки мусора — как есть. Учитывая, что сидит она под IE на выделенке — ей все клево и все летает.

Re[4]: [if gte mso 9] - Что это!?
От: miar
Дата: 11.01.06 14:23
Оценка:

Здравствуйте, DrZubr, Вы писали: DZ>Здравствуйте, leksaa, Вы писали:

DZ>>>Стили для MS Office. L>>Для чего их пихают на WEB-сайты? DZ>На веб-сайты их пихать совсем не надо. Эти стили нужны если ты например на серваке генеришь xls и отдаешь его клиенту, и чтобы те же самые даты нормально отобразились в экселе — тут уж никуда не денешься.

а я вот генерю html, после чего указываю тип документа — Excel и всё хорошо и отлично,
но нигде нет описания mso-стилей. может кто видел/слышал?
а-то как-то извращенно сохранять document.xls в document.htm и искать кто за что отвечает.

Верстка HTML писем. Часть 2

При создании профессиональных рассылок следует учитывать особенности своей аудитории. Как показывает статистика, чем она моложе, тем больше процент открытий писем с мобильных устройств. В среднем, около 30% всех подписчиков используют мобильные устройства для просмотра своей корреспонденции. Это весьма значимая доля, а значит нужно учитывать сей факт при создании своих рассылок.
Сегодня речь пойдет о верстке адаптивных писем.

Для начала следует сказать как себя ведут обычные письма на экранах мобильников: на устройствах под управлением iOS все письмо масштабируется, чтобы уместить письмо в ширину устройства (поэтому письма становятся нечитабельным и требуют ручного масштабирования).
Устройства же на Android отображают письмо в масштабе 100%, в связи с чем, мы видим лишь малюсенький фрагмент письма и не можем в полной мере оценить ни дизайна, ни контента.

При создании адаптивной верстке мы должны поставить следующие цели:

  1. добиться корректного отображения письма в почтовых клиентах (MS Outlook 2003/2007/2010/2013, Mozilla thunderbird)
  2. добиться корректного отображения в веб-интерфейсах основных почтовых провайдеров (mail.ru, yandex, gmail, rambler)
  3. добиться корректного отображения на мобильных устройствах под управлением ОС Android и iOS.

К основным приемам верстки писем (см. предыдущую статью) добавляются новые, чтобы добиться поставленных целей.

Размеры

Теперь мы не может однозначно сказать, какая будет ширина у нашего письма, поэтому все параметры width следует указывать в процентах.
Бывают случаи, когда нам необходимо разместить, например, таблицу товаров, где ширина каждого блока фиксирована. Тогда на маленьких экранах они должны перестраиваться друг под друга (примерно как при адаптации обычных веб-страниц).

Это реализуется следующим образом:




Item1 -->






Товар 1


Item1 END -->






Товар 2


Item2 END -->

Рассмотрим каждый фрагмент кода подробнее.

Сначала мы создаем таблицу шириной 100%, в которой и размещаем блоки. Это сделано для того, чтобы все прочие объекты не пытались обтекать наши блоки с товарами.

Следует обратить внимание еще на пару моментов: параметр display у нашего блока следует указывать как inline-block, также следует указывать параметр float. Сами блоки следует писать без пробелов и переносов строк (они могут быть внутри комментариев, для бОльшего удобства восприятия). Это решит проблему в веб интерфейсе Outlook.com (hotmail.com), где блоки отображаются как "инлайновые".
Если в outlook 2010/2013 возникает проблема с лишними отступами, ее можно решить, заключив контент блока в

Но это может вызвать проблемы в outlook 2007.

Между блоков следует код в - этот код предназначен исключительно для Outlook 2007/2010/2013. Он не поддерживает блочные теги, поэтому специально для него мы формируем вспомогательные ячейки таблицы.

При объявлении блоков можно комбинировать значения ширины указанной в процентах и ограничением минимальной ширины (чтобы блоки перескакивали, достигнув какой-то минимальной ширины)

Родительская таблица

В любом случае, максимальную ширину письма следует ограничивать.
Для большинства веб интерфейсов достаточно указать параметр max-width, который и решит данную задачу. Но Outlook данный параметр игнорирует. Поэтому для версий Outlook 2003-2013, а также Lotus следует все обернуть в таблицу созданную специально для него, а также чтобы исключить проблем в устаревшей версии Safari, необходимо добавить div с ограничением максимальной ширины:

А также следует у родительской таблицы задать класс, ширину которого описать в области head. При этом следует прописать параметр для мобильных устройств:

 @media only screen and (max-device-width: 600px), only screen and (max-width: 600px) < table[class="table600"]< width:100% !important; max-width:700px; >> .table600

Как вы видите, это несколько противоречит тому, что было написано в предыдущей статье об использовании style. Дело в том, что почти все веб-интерфейсы игнорируют данный параметр (вернее - вырезают), а вот мобильные почтовые клиенты по-умолчанию интерпретируют корректно (приложение Почта на Android до версии 5.0 и приложение Mail на iOS).
Это нам дает некоторую свободу в использовании дополнительных плюшек для мобильных устройств.

Изображения в тексте

Часто необходимо вставить изображение с обтеканием. Для корректного отображения в outlook следует использовать следующую конструкцию:

Медиа запросы(@media)

Наиболее популярные мобильные почтовые клиенты (стандартное приложение Android и iOS) поддерживают медиа-запросы, так что можно использовать стандартные приемы, применяемые при верстке адаптивных сайтов:

 html < -webkit-text-size-adjust:none; -ms-text-size-adjust: none;>@media only screen and (max-device-width: 600px), only screen and (max-width: 600px) < table[class="table600"]< width: auto !important; max-width:600px; >td[class="mob_center"] < text-align: center !important; >div[class="mob_center_bl"] < float:none !important; display: block !important; margin: 0 auto; >> .table600

Обратите внимание на первую строку - стиль -webkit-text-size-adjust:none; позволяет предотвратить увеличение шрифта на iOS-устройствах, это в значительной степени сделает отображение более аккуратным.

Также, вы, наверное, обратили внимание, что в качестве селекторов используются не классы, а атрибуты. Это критично для веб-интервейса yahoo.com

И так, подведем небольшой итог по данной статье:

Верстая адаптивное письмо следует помнить:

  1. параметры ширины должны быть указаны в процентах (если блок не является "плавающим")
  2. максимальная ширина блока, вместе со всеми внешними рамками и отступами не должна превышать 320px
  3. Outlook не воспринимает блочную структуру, для него нужно прописывать спец.теги, где описывать табличную структуру.
  4. Outlook.com(hotmail) плавающие блоки интерпретирует как инлайновые. поэтому не следует оставлять лишние пробелы и символы переноса строки
  5. приложение Gmail не поддерживает медиа-запросы (также как приложение от mail.ru, yandex.ru и большинство других)
  • верстка писем,
  • адаптивная верстка,
  • копилка идей,

Хабр, давай пофиксим письма?

В очередной раз получив письмо от хабра, я расстроился. А дело вот в чем. На скриншоте слева мы видим нормальное адаптированное письмо. Так оно отображается во всех вменяемых мобильных почтовых клиентах, которые поддерживают media queries. Теперь давайте взглянем на скрин справа. Таким письмо мы видим в мобильных Gmail, Yandex, Mail.ru клиентах как на андроиде, так и на яблочке. Как вы уже возможно догадались, эти клиенты media queries не поддерживают.

В случае с хабром задача проста до боли. Нам нужно отказаться от медиазапросов в пользу банальной резиновой верстки с кусочками магии. Давайте представим, что текущее письмо хабра — это #NEWSLETTER# для упрощения восприятия кода.

Прежде всего рассмотрим обертку письма в ее текущем виде:

 
#NEWSLETTER#

Давайте избавимся от мусора:

 
#NEWSLETTER#

Уже намного лучше. А теперь давайте сделаем обертку адаптивной:

  
Похожие публикации:
  1. Cin fail c что это
  2. Ens33 ubuntu что это
  3. Момент нагрузки квт м что это
  4. Почему при распечатке документа в ворде смещается текст

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *