Ответ 1
Решение гениальности работало в большинстве ситуаций. Но для Outlook 2007, 2010 и 2013 он не работал, поскольку строки будут удалены.
В обычном HTML для браузеров упрощение элементов перекрытия.
Но в темном мире электронной почты HTML, где девиз - "код типа 1996", потому что Outlook использует механизм рендеринга из MS Word, а Gmail удаляет почти все, каждый метод для перекрытия двух элементов, о котором я могу думать, - это неподходящий из-за плохой поддержки клиентов:
Position
не поддерживается для многих клиентов, поэтому нет position: absolute;
или position: relative;
и не top
, left
, right
...overflow: visible;
, а ширина и высота, которая меньше, чем размер содержимого элемента, не очень хорошо работает, когда теги <img>
все нужны явные высоты и ширины или где макеты из-за отсутствия поддержки float
и неустойчивого лечения <div>
s, по необходимости необходимо основывать на таблицах большую часть времени. (при этом, если что-либо возможно, что-то, основанное на этом, похоже на наиболее вероятный вариант)Есть ли что-то, что можно надежно использовать для создания перекрытия между элементами в электронной почте с перекрестными клиентом? И/или какой-либо способ сделать элемент выведенным из его ограничивающей рамки, не влияя на расположение его соседей?
Например, предположим, что вы хотели сделать что-то вроде этого (пунктирные линии и фоны, показывающие ограничивающие поля), где большое изображение висит над строкой ниже, а не толкает ее вниз...
Элемент (в этом случае <img>
, но не обязательно изображение) перекрывает другие элементы (в этом случае строка ниже - но не обязательно отдельная строка), не отталкивая их.
Есть ли способ сделать это без серьезных проблем совместимости с клиентами?
РЕДАКТИРОВАТЬ: Только что нашел этот кусочек сумасшедшего извращенного гения: создание перекрытия ячеек с использованием colspans и rowspans. Это может быть вариант, еще не прошедший тщательную проверку своего кросс-клиентского рендеринга, хотя любая информация из предыдущего опыта или исследований приветствуется.
Предположим, мы создаем информационный бюллетень, в котором мы не можем предсказать, какие клиенты будут использовать наши клиенты, поэтому мы должны поддерживать популярные основные почтовые клиенты: Outlook, Gmail, Yahoo, Hotmail, Thunderbird, iOS/OSX, Android...
Решение гениальности работало в большинстве ситуаций. Но для Outlook 2007, 2010 и 2013 он не работал, поскольку строки будут удалены.
Немного поздно в разговоре, но этот похожий ответ - это техника, которую вы ищете.
Ваш пример намного сложнее, поскольку вы охватываете как строки, так и столбцы. Я за вызов:
<table width="600" border="0" cellpadding="0" cellspacing="0">
<tr><!-- This row is needed to enforce col widths in Outlook -->
<td width="100">
</td>
<td width="300">
</td>
<td width="200">
</td>
</tr>
<tr>
<td width="400" valign="top" height="80" colspan="2" bgcolor="#bbbbbb">
Title Here
</td>
<td width="200" valign="top" height="120" rowspan="2" bgcolor="#dddddd">
Image Here
</td>
</tr>
<tr>
<td width="100" valign="top" height="540" rowspan="2" bgcolor="#cccccc">
Column<br>...<br>...<br>...
</td>
<td width="300" valign="top" height="40" bgcolor="#aaaaaa">
Heading 1
</td>
</tr>
<tr>
<td width="500" valign="top" height="500" colspan="2" bgcolor="#eeeeee">
Content<br>...<br>...<br>...
</td>
</tr>
</table>
Это будет как можно ближе. Вы не можете создавать не прямоугольники, поэтому верхний заголовок в теле должен находиться в собственной ячейке.