答案 0 :(得分:4)
我发现实现此目的的最佳方法是在使用MSO条件来控制桌面Outlook的宽度时在表内使用DIV。
示例:
<!--[if (gte mso 9) | (IE) ]><table width="640"><tr><td align="center"><![endif]-->
<table width="100%" align="center">
<tr>
<td align="center">
<!--[if (gte mso 9) | (IE) ]><table width="100%"><tr><td width="300" align="center"><![endif]-->
<div style="width:300px; display:inline-block; margin:0 auto; text-align:center;">
<table align="center" width="100%">
<tr>
<td class="left" align="center">
<img border="0" src="yourimage.png" width="280" />
</td>
</tr>
</table>
</div>
<!--[if (gte mso 9) | (IE) ]></td><td width="320" align="right"><![endif]-->
<div style="max-width:320px; display:inline-block; margin:0 auto;">
<table align="center" width="100%">
<tr>
<td align="center">Your copy goes here</td>
</tr>
</table></div>
<!--[if (gte mso 9) | (IE) ]></td></tr></table><![endif]-->
</td>
</tr>
</table>
<!--[if (gte mso 9) | (IE) ]></td></tr></table><![endif]-->
下一个最好的方法是通过TH标签:
<!--[if (gte mso 9) | (IE) ]><table width="640"><tr><td align="center"><![endif]-->
<table width="100%" align="center" style="max-width:640px;">
<tr>
<th align="center" width="300" style="display:inline-block;"><img src="yourimage.png"></th>
<th align="center" width="310" style="display:inline-block;">your copy here</th>
</tr>
</table>
<!--[if (gte mso 9) | (IE) ]></td></tr></table><![endif]-->
这两个都有问题,需要不断调整和操作才能让它们发挥作用。但是,我发现TH解决方案有更多的怪癖(例如字体粗体,随机无法解释的边框等),并且比div / mso条件选项更少'可自定义'。
在大多数客户端(ref)中接受div中的max-width,但Outlook桌面除外,它由MSO条件处理。如果您想进一步控制,您还可以将div设置为定义的宽度而不是max-width,从而实现更加可控的环境。
答案 1 :(得分:1)
您可以通过将列设置为display: inline-block
来使列自行组织。不确定是否所有电子邮件客户端都支持它,但它应该可以正常工作。
HTML:
<div>Whatever content before</div>
<div class="row">
<div class="col"><img src="image.jpg" /></div>
<div class="col">text content</div>
<div class="col"><img src="image2.jpg" /></div>
</div>
<div>Whatever content after</div>
CSS:
.row {
text-align: center;
}
.col {
display: inline-block;
max-width: 300px;
text-align: left;
}
答案 2 :(得分:1)
你可以用下一个想法来完成这个任务。
您可以为每个列定义固定宽度,为父容器定义最大宽度,在本例中为表本身。如果没有足够的空间用于两者,那么目标是使辅助列在第一列之前折叠。
在bZWokw上查看此示例CodePen。
CSS
.column-1 {float:left; width:200px;}
.column-2 {float:left; width:400px;}
.content { padding:10px; }
HTML
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="100%">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic autem ratione porro perferendis minus itaque ab harum molestiae natus ipsam.</p>
</td>
</tr>
<tr>
<td width="100%">
<div class="column-1">
<div class="content">
<img src="http://placehold.it/200x200/" alt="" style="max-width:100%;">
</div>
</div>
<div class="column-2">
<div class="content">
<h2>HAMILTON - The Revolution</h2>
<a href="">Review this Product</a>
</div>
</div>
</td>
</tr>
<tr>
<td width="100%">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam, esse itaque. Aliquid doloremque tempore, dicta iure consectetur odit vel eveniet minus mollitia reprehenderit incidunt ratione minima aut dignissimos, pariatur in.</p>
</td>
</tr>
</table>
答案 3 :(得分:0)
您使用表格并依赖普通文档流程(breif description on that here)。这里有太多的东西要解释,虽然我自己讨厌只链接答案,但是你走了。
这是IMO,它解决了您的确切问题,是我读过的最好的电子邮件模板教程之一。
&#34;在没有媒体查询的情况下创建面向未来的响应式电子邮件&#34;
编辑:此外,这是验证不同电子邮件客户端中CSS属性兼容性的绝佳链接:
答案 4 :(得分:0)
@Gortonington提供的答案非常好!我将详细介绍并提供一些代码:
<!--[if mso]>
<table border="0" cellspacing="0" cellpadding="0" align="center" width="660">
<tr>
<td align="center" valign="top" width="660">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" align="center" width="100%" style="max-width:660px;">
<tr>
<td align="center" valign="top" style="font-size:0;">
<!--[if mso]>
<table border="0" cellspacing="0" cellpadding="0" align="center" width="660">
<tr>
<td align="left" valign="top" width="330">
<![endif]-->
<div style="display:inline-block; Margin: 0 -2px; width:100%; min-width:200px; max-width:330px; vertical-align:top;">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td>
CONTENT DOES HERE
</td>
</tr>
</table>
</div>
<!--[if mso]>
</td>
<td align="left" valign="top" width="330">
<![endif]-->
<div style="display:inline-block; Margin: 0 -2px; width:100%; min-width:200px; max-width:330px; vertical-align:top;">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td>
CONTENT DOES HERE
</td>
</tr>
</table>
</div>
<!--[if mso]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
<!--[if mso]>
</td>
</tr>
</table>
<![endif]-->
此方法称为混合方法,用于为电子邮件客户端重新配置不同屏幕大小的布局,而不管媒体查询支持如何。从本质上讲,它使用最大宽度和最小宽度来施加刚性基线(允许一些移动),并为Outlook提供固定的宽宽度,无论如何都要绑定到桌面。一旦设置了适合移动设备的基准,媒体查询就会在支持它的客户端中逐步增强电子邮件。
有一些开源模板可以实现这一目标。我maintain one,其hybrid template完成了您的需要。
答案 5 :(得分:-2)
尝试 Bootstrap3 它可能对您有所帮助,它基本上简化了css库。它适用于简单的网站和博客,而不是
答案 6 :(得分:-2)
您可以尝试:宽度:100%;最大宽度:400px