Альтернатива float для почтовых клиентов

Что является альтернативой для почтовых клиентов?

Вот что я использую с плавающей запятой. И мне нужен альтернативный подход, чтобы точно сохранить поведение.

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;
}

jsfiddle

Вот что я пытался сделать, используя доступные во всех почтовых клиентах 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;
}

jsfiddle

Этот подход не работает таким образом, что когда правый текст перемещается в его собственную строку, слова не переносятся из-за установки min-width. Если бы можно было добавить перенос слов после того, как правый текст переместился в отдельную строку, это решение было бы тем, что я ищу.

Согласно это Outlook не поддерживает display: table, и после тестирования это оказалось правдой. Поэтому, пожалуйста, не советуйте мне использовать display: table или аналогичный дисплей (например, inline-table, table-row, table-column, table-cell и т. д.).

Альтернатива float для почтовых клиентов

Почтовые клиенты Outlook не любят div

Syfer 18.10.2018 14:02

@Syfer, что мне использовать вместо этого?

Yaroslav Trofimov 18.10.2018 19:30

Придерживайтесь только таблиц. Следуйте тому, что предложил Гвалли

Syfer 18.10.2018 22:24

@Syfer, таблица не позволяет содержимому перейти на следующую строку.

Yaroslav Trofimov 18.10.2018 23:02

Разрыв слова - ваш друг.

Syfer 18.10.2018 23:05

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

Yaroslav Trofimov 18.10.2018 23:11

Да, это возможно. Посмотрите мой ответ ниже.

Syfer 19.10.2018 05:13
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
7
2 054
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вот трюк, который я придумал.

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;
}

jsfiddle.

Это просто. Мне нужно всегда иметь как можно большее расстояние между левым и правым компонентами, и это отражено в свойстве calc фиктивного элемента.

Почтовые клиенты Outlook не любят div

Syfer 18.10.2018 14:02

float работает почти со всеми почтовыми клиентами, кроме IBM Notes 9, Outlook 2007–16 (настольный ПК) и Windows 10.

В почтовых клиентах, где float не работает, для правильной работы, например, для <table> я использую либо <table align = "right">, либо <table style = "text-align: right;">.

Удачи.

Таблица - это далеко не то же самое, что и float. Например, на маленьких экранах ячейка не переходит на следующую строку.

Yaroslav Trofimov 16.10.2018 23:34
div не имеет универсальной поддержки по электронной почте. Те же клиенты, которые не поддерживают float, не поддерживают div. Вы можете создать table, который будет действовать как объект, который вы можете перемещать по электронной почте. Я думал, это будет понятно опытному разработчику. Электронная почта - это не веб-разработка. Он использует похожие технологии, но по-разному.
gwally 17.10.2018 22:27
Ответ принят как подходящий

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

Примечание. 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.

Yaroslav Trofimov 20.10.2018 10:29

@YaroslavTrofimov Да, это не на div, поэтому вокруг него есть таблица-призрак. Приведенный выше код работает безупречно, если только WYSIWYG-редактор электронной почты не старый и не любит комментарии (такое уже было раньше).

Syfer 20.10.2018 12:07

Другие вопросы по теме