如何使 images/links 的列响应式折叠电子邮件模板
How can I make columns of images/links collapse responsively for an email template
我的任务是让链接(也是图像)从 6 个水平链接开始,然后将它们折叠成 3 个,然后 3 个相互重叠。
这里的问题是要发送的电子邮件模板。尽管我一直在使我的模板具有响应性,但它似乎只是从水平线上的 6 个链接变为垂直对齐的 6 个链接。中间没有迷你崩溃?只是水平直线,或垂直直线。
我的主要困境是,因为这是用于电子邮件,我不得不使用内联来做所有事情 CSS,我不喜欢的东西..
我尝试过使用 flex(显然行不通)尝试过使用不同的表实现方式,但我无法让它以所需的方式折叠...
目标:让它从 6 水平方向折叠到 3 和 3 垂直方向重叠。非常感谢任何建议或帮助,谢谢。
注意我只放了 2,因为最多 6 个就没必要了,但这是我通常采用的方法
<center>
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateColumns">
<tr>
<td align="center" valign="top" width="50%" class="templateColumnContainer">
<table border="0" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td class="leftColumnContent">
<img src="http://placekitten.com/g/480/300" width="280" style="max-width:280px;" class="columnImage" />
</td>
</tr>
</table>
</td>
<td align="center" valign="top" width="50%" class="templateColumnContainer">
<table border="0" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td class="rightColumnContent">
<img src="http://placekitten.com/g/480/300" width="280" style="max-width:280px;" class="columnImage" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
<style type="text/css">
@media only screen and (max-width: 640px){
.templateColumnContainer{
display:block !important;
width:100% !important;
}
}
</style>
尝试向左浮动和宽度 100% ...
这是使用 flex 和 div 解决您的问题的方法。我看不到嵌套表的需要。
Js Fiddle Link
Html
<div class="container">
<div class="inner-container">
<div class="element">
<img src="whatever" alt="Fragrances"/>
</div>
<div class="element">
<img src="whatever" alt="Wicks"/>
</div>
<div class="element">
<img src="whatever" alt="Vessels"/>
</div>
</div>
<div class="inner-container">
<div class="element">
<img src="whatever" alt="Wax"/>
</div>
<div class="element">
<img src="whatever" alt="Kits"/>
</div>
<div class="element">
<img src="whatever" alt="Diffusers"/>
</div>
</div>
</div>
和样式:
.element {
padding: 5px;
border: 1px black solid;
}
.inner-container {
display:flex;
justify-content: center;
}
@media (max-width: 600px) {
.container {
display: block;
}
}
@media (min-width: 600px) {
.container {
display: flex;
justify-content: center;
}
}
这是最接近成功的原因,因为 flex 不能与电子邮件服务一起使用,尽管它不是内联的,但就响应式电子邮件而言,唯一不起作用的方面是:
@media (max-width: 600px) {
.non-flex-inner-container {
display: inline-block;
}
}
因为据我所知这不能内联..
这是最接近的成功:
<style type="text/css">
.non-flex-container {
display: inline;
text-align: center;
width: 100%;
float: left;
}
.non-flex-inner-container {
display: inline;
text-align: center;
width: 100%;
}
.non-flex-element {
display: inline;
}
@media (max-width: 600px) {
.non-flex-inner-container {
display: inline-block;
}
}
</style>
<div class="non-flex-container">
<div class="non-flex-inner-container">
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="100" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="50" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="70" height="10" style="margin:10px;"/></a>
</div>
</div><br>
<div class="non-flex-inner-container">
<div class="non-flex-element">
<a href="#"><img src="img" alt= width="40" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="40" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="100" height="10" style="margin:10px;"/></a>
</div>
</div>
</div>
这在电子邮件和内联 css 方面取得了圆满成功,但是我只能通过 AMP 页面实现这一点,显然电子邮件服务无法自由发送 amp 页面,除非该人将您列入白名单。 .. 这完全违背了目的...
width:100%; float:left;">
<div class="non-flex-inner-container" style="display:inline; text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(min-width: 600px)" /></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="50" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="70" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
</div>
<div class="non-flex-inner-container" style="display:inline; text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
</div>
<!-- Display Inline-block when less than 600px -->
<div class="non-flex-container" style="display:inline; text-align:center; width:100%; float:left;">
<div class="non-flex-inner-container" style="display:inline-block;" text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(max-width: 600px)" /></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="50" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="70" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
</div>
<div class="non-flex-inner-container" style="display:inline-block;" text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
</div>
</div>
结论...目前还不可能....如果其他人有更多见解,请告诉我。非常感谢@Rustam Goygov 的洞察力和指导!
我的任务是让链接(也是图像)从 6 个水平链接开始,然后将它们折叠成 3 个,然后 3 个相互重叠。
这里的问题是要发送的电子邮件模板。尽管我一直在使我的模板具有响应性,但它似乎只是从水平线上的 6 个链接变为垂直对齐的 6 个链接。中间没有迷你崩溃?只是水平直线,或垂直直线。
我的主要困境是,因为这是用于电子邮件,我不得不使用内联来做所有事情 CSS,我不喜欢的东西..
我尝试过使用 flex(显然行不通)尝试过使用不同的表实现方式,但我无法让它以所需的方式折叠...
目标:让它从 6 水平方向折叠到 3 和 3 垂直方向重叠。非常感谢任何建议或帮助,谢谢。
注意我只放了 2,因为最多 6 个就没必要了,但这是我通常采用的方法
<center>
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateColumns">
<tr>
<td align="center" valign="top" width="50%" class="templateColumnContainer">
<table border="0" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td class="leftColumnContent">
<img src="http://placekitten.com/g/480/300" width="280" style="max-width:280px;" class="columnImage" />
</td>
</tr>
</table>
</td>
<td align="center" valign="top" width="50%" class="templateColumnContainer">
<table border="0" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td class="rightColumnContent">
<img src="http://placekitten.com/g/480/300" width="280" style="max-width:280px;" class="columnImage" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
<style type="text/css">
@media only screen and (max-width: 640px){
.templateColumnContainer{
display:block !important;
width:100% !important;
}
}
</style>
尝试向左浮动和宽度 100% ...
这是使用 flex 和 div 解决您的问题的方法。我看不到嵌套表的需要。 Js Fiddle Link
Html
<div class="container">
<div class="inner-container">
<div class="element">
<img src="whatever" alt="Fragrances"/>
</div>
<div class="element">
<img src="whatever" alt="Wicks"/>
</div>
<div class="element">
<img src="whatever" alt="Vessels"/>
</div>
</div>
<div class="inner-container">
<div class="element">
<img src="whatever" alt="Wax"/>
</div>
<div class="element">
<img src="whatever" alt="Kits"/>
</div>
<div class="element">
<img src="whatever" alt="Diffusers"/>
</div>
</div>
</div>
和样式:
.element {
padding: 5px;
border: 1px black solid;
}
.inner-container {
display:flex;
justify-content: center;
}
@media (max-width: 600px) {
.container {
display: block;
}
}
@media (min-width: 600px) {
.container {
display: flex;
justify-content: center;
}
}
这是最接近成功的原因,因为 flex 不能与电子邮件服务一起使用,尽管它不是内联的,但就响应式电子邮件而言,唯一不起作用的方面是:
@media (max-width: 600px) {
.non-flex-inner-container {
display: inline-block;
}
}
因为据我所知这不能内联.. 这是最接近的成功:
<style type="text/css">
.non-flex-container {
display: inline;
text-align: center;
width: 100%;
float: left;
}
.non-flex-inner-container {
display: inline;
text-align: center;
width: 100%;
}
.non-flex-element {
display: inline;
}
@media (max-width: 600px) {
.non-flex-inner-container {
display: inline-block;
}
}
</style>
<div class="non-flex-container">
<div class="non-flex-inner-container">
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="100" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="50" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="70" height="10" style="margin:10px;"/></a>
</div>
</div><br>
<div class="non-flex-inner-container">
<div class="non-flex-element">
<a href="#"><img src="img" alt= width="40" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="40" height="10" style="margin:10px;"/></a>
</div>
<div class="non-flex-element">
<a href="#"><img src="img" alt="" width="100" height="10" style="margin:10px;"/></a>
</div>
</div>
</div>
这在电子邮件和内联 css 方面取得了圆满成功,但是我只能通过 AMP 页面实现这一点,显然电子邮件服务无法自由发送 amp 页面,除非该人将您列入白名单。 .. 这完全违背了目的...
width:100%; float:left;">
<div class="non-flex-inner-container" style="display:inline; text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(min-width: 600px)" /></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="50" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="70" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
</div>
<div class="non-flex-inner-container" style="display:inline; text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(min-width: 600px)"/></amp-img></a>
</div>
</div>
<!-- Display Inline-block when less than 600px -->
<div class="non-flex-container" style="display:inline; text-align:center; width:100%; float:left;">
<div class="non-flex-inner-container" style="display:inline-block;" text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(max-width: 600px)" /></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="50" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="70" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
</div>
<div class="non-flex-inner-container" style="display:inline-block;" text-align:center; width:100%;">
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="40" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
<div class="non-flex-element" style="display:inline;">
<a href=""><amp-img src="img" alt="" width="100" height="10" style="margin:10px;" media="(max-width: 600px)"/></amp-img></a>
</div>
</div>
</div>
结论...目前还不可能....如果其他人有更多见解,请告诉我。非常感谢@Rustam Goygov 的洞察力和指导!