У меня есть запрос, что Gmail игнорирует display:none
.
Что делать? В электронной почте HTML для скрытия строки или div.
У меня есть запрос, что Gmail игнорирует display:none
.
Что делать? В электронной почте HTML для скрытия строки или div.
Если style="display:none"
не работает в Gmail, поставь style="display:none !important;"
и будет работать в Gmail.
Для тех, кто обращается сюда с аналогичной проблемой, связанной с разработкой электронной почты для мобильных устройств и настольных компьютеров в Gmail и Gmail: если вы используете медиа-запросы и показываете/скрываете контент, встроенный css не сможет перезаписать встроенное объявление !important. Вместо этого вы можете использовать overflow:hidden, например:
<div class="mobile" style="width:0; overflow:hidden;float:left; display:none"></div>
Во встроенных медиа-запросах вы, естественно, отмените эти стили, чтобы открыть div, а затем скрыть настольную версию содержимого.
@media only screen and (max-width: 480px) {
.mobile {
display : block !important;
width : auto !important;
overflow : visible !important;
float : none !important;
}
.desktop {
display : none !important;
}
}
К сожалению, свойство height не работает в Gmail, в противном случае это было бы лучшим решением, учитывая, что это создает раздел пробелов под видимым содержимым, равный высоте div.
max-height: 0
и использовать его на уровне блока (div — он не работает с таблицей или строкой таблицы).
- person vard; 23.10.2015
max-height: 0
у меня сработала!
- person Adam Loving; 18.11.2015
Хотя на этот вопрос уже был дан ответ, я просто подумал, что добавлю решение, которое действительно сработало для меня, на случай, если у кого-то возникнет эта проблема в будущем. Это действительно комбинация приведенных выше ответов и чего-то еще, что я нашел в Интернете.
Проблема, с которой я столкнулся, касалась Gmail и Outlook. Согласно OP, мобильный контент, который у меня был, не скрывался в Gmail (Explorer, Firefox и Chrome) или Outlook (2007, 2010 и 2013). Я решил это, используя следующий код.
Вот мой мобильный контент:
<!--[if !mso 9]><!-->
<tr>
<td style="padding-bottom:20px;" id="mobile">
<div id="gmail" style="display:none;width:0;overflow:hidden;float:left;max-height:0;">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<img src="imageurl" style="border:0;display:block;width:100%;max-height:391px;" />
</td>
</tr>
<tr>
<td style="border-left-style:solid;border-left-width:1px;border-left-color:#d5e1eb;border-right-style:solid;border-right-width:1px;border-right-color:#d5e1eb;background:#f7fafd;padding-top:15px;padding-bottom:15px;font-family:Arial,Helvetica,sans-serif;font-size:22px;color:#1c1651;padding-left:10px;padding-right:10px;text-align:left;" id="mobiletext" align="left">We're now on Twitter</td>
</tr>
<tr>
<td style="border-left-style:solid;border-left-width:1px;border-left-color:#d5e1eb;border-right-style:solid;border-right-width:1px;border-right-color:#d5e1eb;background:#f7fafd;font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#585858;padding-left:10px;padding-right:10px;text-align:left;line-height:24px;" id="mobiletext"><a href="#" style="text-decoration:none;color:#0068ca;">Follow us now</a> for some more info.
</td>
</tr>
<tr>
<td>
<img src="imageurl" style="border:0;display:block;width:100%;max-height:37px;" />
</td>
</tr>
</table>
</div>
</td>
</tr>
<!--<![endif]-->
А вот и CSS:
@media only screen and (min-width:300px) and (max-width: 500px) { /* MOBILE CODE */
*[id=mobile] {
width:300px!important;
height:auto!important;
display:block!important;
overflow:visible!important;
line-height:100%!important;
}
*[id=gmail] {
display:block!important;
width:auto!important;
overflow:visible!important;
float:none !important;
height:inherit!important;
max-height:inherit!important;
}
Исправления для Outlook
Итак, как вы можете видеть из приведенного выше HTML-кода, все содержимое заключено в эти теги;
<!--[if !mso 9]><!--> <!--<![endif]-->
,
скрывает содержимое версий Outlook, о которых я упоминал. Для всех остальных почтовых клиентов display:none;
работает просто отлично. Я также видел, что вы также можете использовать mso-hide:all
, чтобы скрыть что-то для Outlook, но я подумал, что это немного проще, чем встроенный код.
Исправления для Gmail
Теперь для Gmail вы можете видеть, что я создал «особый» id
под названием gmail
, который затем применил к div в <td>
. Я пробовал БЕСЧИСЛЕННОЕ количество других методов использования таких вещей, как overflow:hidden
inline и всевозможных других комбинаций, но это то, что сработало для меня.
Короче говоря, обернув содержимое в <td>
в <div>
, который затем содержит overflow:hidden,width:0
и т. д., а затем перезаписав эти стили, присвоив div id
из, в моем случае gmail
решил проблему для меня.
В любом случае, может быть, кому-то это пригодится в будущем!
Использование display:none !important;
решает проблему с gmail, но затем Outlook 2007 и 2010 игнорирует ее. Обойти это с помощью display:none; display:none !important;
Таким образом, gmail использует одну версию, а Outlook 2007 и 2010 — другую.
mso-hide: all;
для Outlook 2007-13.
- person István Ujj-Mészáros; 15.04.2016
Уже было сказано, что display:none !important;
работает, но никто не указал вариант использования для этого, поэтому я дам тот, над которым я работал, когда нашел этот вопрос и решение на SO.
Я создавал электронное письмо, состоящее из нескольких частей, с обычным текстом и html. В исходнике html генерируется из файлов шаблонов, а обычный текст создается путем удаления тегов из полного электронного письма.
Чтобы включить дополнительный текст в обычный текст, который не отображается в html, самый простой способ — обернуть его в <div style="display:none !important>
, который будет удален при создании обычного текста. Например, если это ваш шаблон:
<p>This is part of an html message template.</p>
<div style="display:none !important">=================================</div>
<div style="border-top:3px solid black;margin-top:1em;">
<p>This is some footer text below a black line</p>
</div>
HTML будет отображаться так, как ожидалось (без множества =), а обычный текст со всеми удаленными элементами div будет выглядеть так:
This is part of an html message template.
=========================================
This is some footer text below a black line.
Полностью удалите элемент из исходного кода.
Клиенты электронной почты очень строго относятся к некоторым правилам CSS. Кроме того, учитывая, что JavaScript не может быть выполнен внутри электронной почты, display: none
в любом случае не имеет там никакой функции, не так ли?
display: none
?
- person Jamey; 19.03.2014
display: none
удобно скрывать определенные элементы в версии для большого экрана.
- person rinogo; 12.01.2016
Спасибо за это, очень полезно для меня.
Попробуйте max-height для Gmail, это должно поднять его. затем используйте max-height:inherit !important; в CSS это должно устранить проблему с интервалом:
<div class="mobile" style="display:none; width:0px; max-height:0px; overflow:hidden;">
@media only screen and (max-width: 480px) {
.mobile {
display:block !important;
margin: 0;
padding:0;
overflow : visible !important;
width:auto !important;
max-height:inherit !important;
}
}
Чтобы скрыть элемент в электронном письме в формате HTML и заставить его работать в Gmail, вам нужно обнулить его и настроить размер в CSS (что Gmail проигнорирует).
Вот так:
<style>
@media only screen and (max-width: 480px) {
*[class~=show_on_mobile] {
display : block !important;
width : auto !important;
max-height: inherit !important;
overflow : visible !important;
float : none !important;
}
</style>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<!--[if !mso]><!-->
<td style="width: 0; max-height: 0; overflow: hidden; float: left;">
</td>
</tr>
<!--<![endif]-->
</table>
Кроме того, добавленный условный комментарий относится к Outlook 07.
hide-for-desktop
и hide-for-small
, которые являются частью документации Zurb Ink. Я не вижу примеров обработки такой настройки для Outlook и GMail в вашем стандартном шаблоне. Как правило, мой шаблон работает в либо GMail, либо в Outlook, но не в обоих.
- person crmpicco; 22.09.2015
У меня есть ситуация, в которой я просто сказал пару слов. Я использовал размер шрифта: 0px;.
<div style="font-size:0px">foo bar</div>
Это сработало для меня.
Опираясь на Дэна С., еще один пример, который я часто использую.
@media only screen and (max-width: 480px) and (min-device-width: 320px) and (max-device-width: 480px) {
p[class="hidden"] { /* I use this format to get past Yahoo Mail */
display: block !important;
visibility: visible !important;
max-height: none !important;
}
}
<td>
<p class="hidden" style="display:none;visibility:hidden;max-height:0px;">You can't see me.</p>
</td>
С большим удовольствием я хотел бы поделиться этой новостью со всеми, что Gmail теперь поддерживает свойство CSS display:none при тестировании EmailMonks< /а>. Но вам нужно применить класс с CSS при использовании «display: none», чтобы инструмент встраивания вас не коснулся.
Вы можете прочитать больше здесь
Если у вас возникли проблемы с Gmail, исправление, указанное в пункте три, сработало и для меня. Я применил аналогичный подход, используя теги div и переопределения в строке, а затем определив стиль CSS в теге заголовка, характерном для gmail. Каждый раз, когда я хочу что-то скрыть от рабочего стола Outlook, я делаю следующее: если !mso. См. пример ниже:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
So my code looks like this:
@media screen and (max-width : 480px) { div[id=gmail] {display:block!important;
width:100%!important;
overflow:visible!important;
float:none !important;
height:inherit!important;
max-height:inherit!important;}
}
</style>
<title></title>
</head>
<body>
<!--And the in the i have the following setting inline-->
<table>
<tr>
<td>
<div id="gmail" style=
"display:none;width:0;overflow:hidden;float:left;max-height:0;">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#E9E9E8"
align="center"><![if !mso]>
<tr>
<td valign="top">
<table width="133" bgcolor="#FFFFFF" style=
"border: 1px solid #c6c6c5;" cellpadding="0" cellspacing="0">
<!--My content--></table>
</td>
</tr>
<![endif]></table>
</div>
</td>
<!--This worked for me in Android 4.2 /4.1 /apple iOS
desktop web based: gmail, yahoo, Aol, Outlook.com in IE / FF and Chrome
desktop: outlook 2010--></tr>
</table>
</body>
</html>