Что является альтернативой для почтовых клиентов?
Вот что я использую с плавающей запятой. И мне нужен альтернативный подход, чтобы точно сохранить поведение.
html
<div class = "container">
<div class = "leftText">
left text
</div>
<div class = "rightText">
right text right text
</div>
</div>
css
.leftText {
display: inline-block;
border: 1px solid green;
background: yellow;
}
.rightText {
display: inline-block;
float: right;
border: 1px solid green;
background: cyan;
}
Вот что я пытался сделать, используя доступные во всех почтовых клиентах text-align и calc (calc доступен согласно это).
html
<div class = "container">
<div class = "leftText">
left text
</div>
<div class = "rightText">
right text right text
</div>
</div>
css
.leftText {
display: inline-block;
border: 1px solid green;
background: yellow;
}
.rightText {
display: inline-block;
text-align: right;
width: calc(100% - 58px);
min-width: 122px;
border: 1px solid green;
background: cyan;
}
Этот подход не работает таким образом, что когда правый текст перемещается в его собственную строку, слова не переносятся из-за установки min-width. Если бы можно было добавить перенос слов после того, как правый текст переместился в отдельную строку, это решение было бы тем, что я ищу.
Согласно это Outlook не поддерживает display: table, и после тестирования это оказалось правдой. Поэтому, пожалуйста, не советуйте мне использовать display: table или аналогичный дисплей (например, inline-table, table-row, table-column, table-cell и т. д.).

@Syfer, что мне использовать вместо этого?
Придерживайтесь только таблиц. Следуйте тому, что предложил Гвалли
@Syfer, таблица не позволяет содержимому перейти на следующую строку.
Разрыв слова - ваш друг.
@Syfer, хорошо, позвольте мне объяснить, какой вариант использования мне нужен. У меня есть элемент слева и элемент справа. Левый элемент всегда остается слева, правый всегда остается справа. Теперь, если ширина экрана слишком мала для одновременного размещения левого и правого элементов, я бы хотел, чтобы правый элемент располагался под левым элементом. Можно ли добиться такого поведения с помощью таблицы?
Да, это возможно. Посмотрите мой ответ ниже.






Вот трюк, который я придумал.
html
<div class = "l">
left text
</div>
<div class = "m">
</div>
<div class = "r">
rigth text rigth text
</div>
css
.l {
display: inline-block;
}
.m {
display: inline-block;
width: calc(100% - 180px);
}
.r {
display: inline-block;
}
Это просто. Мне нужно всегда иметь как можно большее расстояние между левым и правым компонентами, и это отражено в свойстве calc фиктивного элемента.
Почтовые клиенты Outlook не любят div
float работает почти со всеми почтовыми клиентами, кроме IBM Notes 9, Outlook 2007–16 (настольный ПК) и Windows 10.
В почтовых клиентах, где float не работает, для правильной работы, например, для <table> я использую либо <table align = "right">, либо <table style = "text-align: right;">.
Удачи.
Таблица - это далеко не то же самое, что и float. Например, на маленьких экранах ячейка не переходит на следующую строку.
div не имеет универсальной поддержки по электронной почте. Те же клиенты, которые не поддерживают float, не поддерживают div. Вы можете создать table, который будет действовать как объект, который вы можете перемещать по электронной почте. Я думал, это будет понятно опытному разработчику. Электронная почта - это не веб-разработка. Он использует похожие технологии, но по-разному.
Как упоминалось выше, можно использовать таблицы для имитации поплавков. Ниже приведен код с использованием гибридный метод кодирования. он работает так, как вы хотите.
Примечание. CSS предназначен только для того, чтобы показать вам, как будет работать наложение. Код ниже может работать без медиа-запросов.
.wrapper{width:680px;outline: 1px solid #f00;}
.wrapper div{outline: 1px solid blue;}
@media screen and (max-width: 480px) {
.wrapper{width:100% !important;}
}<table width = "100%" border = "0" cellspacing = "0" cellpadding = "0" class = "wrapper">
<tbody>
<tr>
<td valign = "top" bgcolor = "#FFFFFF" style = "padding:0px;text-align: center; vertical-align: top; font-size: 0px;">
<!--[if (gte mso 9)|(IE)]><table cellspacing = "0" cellpadding = "0" border = "0" width = "680" align = "center"><tr><td><![endif]-->
<div style = "display:inline-block; max-width:340px; min-width:200px; vertical-align:top; width:100%;">
<table width = "100%" border = "0" cellspacing = "0" cellpadding = "0">
<tbody>
<tr>
<td style = "font-size:10px;">left</td>
</tr>
</tbody>
</table>
</div>
<!--[if (gte mso 9)|(IE)]></td><td><![endif]-->
<div style = "display:inline-block; max-width:340px; min-width:200px; vertical-align:top; width:100%;">
<table width = "100%" border = "0" cellspacing = "0" cellpadding = "0">
<tbody>
<tr>
<td style = "font-size:10px;">right</td>
</tr>
</tbody>
</table>
</div>
<!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>Надеюсь, это ответ, который вы искали.
Ваше здоровье
Outlook не поддерживает inline-block.
@YaroslavTrofimov Да, это не на div, поэтому вокруг него есть таблица-призрак. Приведенный выше код работает безупречно, если только WYSIWYG-редактор электронной почты не старый и не любит комментарии (такое уже было раньше).
Почтовые клиенты Outlook не любят div