Outlook '07/'10/'13 上的全宽背景

Posted

技术标签:

【中文标题】Outlook \'07/\'10/\'13 上的全宽背景【英文标题】:Full Width Backgrounds on Outlook '07/'10/'13Outlook '07/'10/'13 上的全宽背景 【发布时间】:2014-06-10 10:27:34 【问题描述】:

我一直在使用活动监视器的 http://backgrounds.cm/ 代码来实现单个固定高度/宽度 <td>s,它适用于所有桌面客户端,但我们正在转向全宽电子邮件,我无法获得全宽在任何 mso 版本的 Outlook 中正确显示的选项。即,发生这种情况:

我已经按照他们的指示,将他们的代码保留为body 的第一个孩子,但背景延伸到 Outlook 的边距应该在的位置。我正在尝试在 Outlook 中找到一种方法来做单独的全宽背景行。

【问题讨论】:

可以用图片代替背景图片吗? 即使我这样做了,我也必须使用 VML 的 mso-width-percent css,这就是导致背景问题的原因。 【参考方案1】:

全宽表格单元格背景图片

<html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <style>
    v:*  behavior: url(#default#VML); display: inline-block; 
    </style>
    </head>
    <body>
        <center>
        <table  >
            <tr>
                <td bgcolor="#dddddd" style="background-image:url('http://placekitten.com/g/500/300');background-repeat:no-repeat;background-position:center;" background="http://placekitten.com/g/500/300"  >
                <!--[if gte mso 9]>
                    <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:300px;">
                        <v:fill type="frame" src="http://placekitten.com/g/500/300" color="#ffffff" />
                    </v:rect>
                <![endif]-->
                </td>
            </tr>
            <tr>
                <td bgcolor="#33cc99">
                    <table border="0" cellpadding="5" cellspacing="0"><tr><td ><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr></table></td></tr></table>
                </td>
            </tr>
            <tr>
                <td bgcolor="#ffff99" style="background-image:url('http://placekitten.com/g/500/300');background-repeat:no-repeat;background-position:center;" background="http://placekitten.com/g/500/300"  >
                    <!--[if gte mso 9]>
                        <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:300px;">
                            <v:fill type="frame" src="http://placekitten.com/g/500/300" color="#ffffff" />
                        </v:rect>
                    <![endif]-->
                </td>
            </tr>
        </table>
        </center>
    </body>
</html>
在 OSX 10.9.2 上通过 Windows 7 VMWare 在 Outlook 2010 中测试


平铺的全宽表格单元格背景图片

    <html xmlns:v="urn:schemas-microsoft-com:vml">
        <head>
            <style>
                v:*  behavior: url(#default#VML); display: inline-block; 
            </style>
        </head>

        <body>

        <center>
        <table >
            <tr>
                <td bgcolor="#dddddd" style="background-image:url('http://placekitten.com/g/500/300');background-repeat:no-repeat;background-position:center;" background="http://placekitten.com/g/500/300"  >
                    <!--[if gte mso 9]>
                        <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:300px;">
                            <v:fill type="tile" src="http://placekitten.com/g/500/300" color="#ffffff" />
                        </v:rect>
                    <![endif]-->
                </td>
            </tr>
        </table>
        </center>

        </body>
    </html>
在 OSX 10.9.2 上通过 Windows 7 VMWare 在 Outlook 2010 中测试


指定宽度的表格单元格背景图片

这是一个例子,两行,第一行有 3 列,有 3 张单独的背景图片,第二行作为一个背景图片一直跨越。

    <table  border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;">
        <tr>
            <td style="width: 300px; height: 80px; background-image: url('http://placekitten.com/g/300/80');">
            <!--[if gte mso 9]>
                <v:image xmlns:v="urn:schemas-microsoft-com:vml" id="theImage" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 300px; height: 80px; top: 0; left: 0; border: 0; z-index: 1;' src="http://placekitten.com/g/300/80" />
                <v:shape xmlns:v="urn:schemas-microsoft-com:vml" id="theText" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 300px; height: 80px; top: -5; left: -10; border: 0; z-index: 2;'>
                <div>
            <![endif]-->
                <table  border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse;">
                    <tr>
                        <td  align="center" valign="top" style="color:#ffffff;font-size:20px;">
                            <span>Text</span>
                        </td>
                    </tr>
                </table>
            <!--[if gte mso 9]>
                </div>
                </v:shape>
            <![endif]-->
            </td>
            <td style="width: 100px; height: 80px; background-image: url('http://placekitten.com/g/100/80');">
            <!--[if gte mso 9]>
                <v:image xmlns:v="urn:schemas-microsoft-com:vml" id="theImage" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 100px; height: 80px; top: 0; left: 0; border: 0; z-index: 1;' src="http://placekitten.com/g/100/80" />
                <v:shape xmlns:v="urn:schemas-microsoft-com:vml" id="theText" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 100px; height: 80px; top: -5; left: -10; border: 0; z-index: 2;'>
                <div>
            <![endif]-->
                <table  border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse;">
                    <tr>
                        <td  align="center" valign="top">
                            <span>Text</span>
                        </td>
                    </tr>
                </table>
            <!--[if gte mso 9]>
                </div>
                </v:shape>
            <![endif]-->
            </td>
            <td style="width: 200px; height: 80px; background-image: url('http://placekitten.com/g/200/100');">
            <!--[if gte mso 9]>
                <v:image xmlns:v="urn:schemas-microsoft-com:vml" id="theImage" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 200px; height: 80px; top: 0; left: 0; border: 0; z-index: 1;' src="http://placekitten.com/g/200/100" />
                <v:shape xmlns:v="urn:schemas-microsoft-com:vml" id="theText" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 200px; height: 80px; top: -5; left: -10; border: 0; z-index: 2;'>
                <div>
            <![endif]-->
                <table  border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse;">
                    <tr>
                        <td  align="center" valign="top" style="color:#ffffff;font-size:20px;">
                            <span>Text</span>
                        </td>
                    </tr>
                </table>
            <!--[if gte mso 9]>
                </div>
                </v:shape>
            <![endif]-->
            </td>
        </tr>
    </table>
    <table  border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;">
        <tr>
            <td style="width: 600px; height: 150px; background-image: url('http://placekitten.com/g/600/150');">
            <!--[if gte mso 9]>
                <v:image xmlns:v="urn:schemas-microsoft-com:vml" id="theImage" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 600px; height: 150px; top: 0; left: 0; border: 0; z-index: 1;' src="http://placekitten.com/g/600/150" />
                <v:shape xmlns:v="urn:schemas-microsoft-com:vml" id="theText" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 600px; height: 150px; top: -5; left: -10; border: 0; z-index: 2;'>
                <div>
            <![endif]-->
                <table  border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse;">
                    <tr>
                        <td  align="center" valign="top" style="color:#ffffff;font-size:20px;">
                            <span>Text</span>
                        </td>
                    </tr>
                </table>
            <!--[if gte mso 9]>
                </div>
                </v:shape>
            <![endif]-->
            </td>
        </tr>
    </table>
在 OSX 10.9.2 上通过 Windows 7 VMWare 在 Outlook 2010 中测试

【讨论】:

花了一段时间,但我想通了,为你更新了我的答案。 我非常感谢您的努力,但这仍然是固定宽度(600 像素)。全宽为 100%。 EmailOnAcid 的解决方案实际上比 Campaign Monitor 的更差。不使用inset,背景右移。 抱歉,仍在测试中。稍后我会告诉你,但看起来它正在融合在一起! 谢谢!!!! Campaign Monitor 的防弹背景第一次让我失望了,因为没有正确对齐 Outlook 中的图像。 “指定宽度的表格单元格背景图像”部分阻止图像移动。【参考方案2】:

试试这个内置 VML 背景的流畅模板:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title></title>
  <style type="text/css">
    #outlook a padding:0;
    bodywidth:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0; /* force default font sizes */
    .ExternalClass width:100%; .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div line-height: 100%; /* Hotmail */
    a:active, a:visited, a[href^="tel"], a[href^="sms"]  text-decoration: none; color: #005288 !important; pointer-events: auto; cursor: default;
    table td border-collapse: collapse;
    @media only screen and (min-width: 600px)  .maxW  width:600px !important;  
  </style>
</head>
<body style="margin: 0px; padding: 0px; -webkit-text-size-adjust:none; -ms-text-size-adjust:none;" leftmargin="0" topmargin="0" margin margin bgcolor="#FFFFFF">

<div style="background-color:#7bceeb;">
  <!--[if gte mso 9]>
  <v:background xmlns:v="urn:schemas-microsoft-com:vml" fill="t">
    <v:fill type="tile" src="http://i.imgur.com/XCnBXwP.png" color="#7bceeb"/>
  </v:background>
  <![endif]-->

<table  border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top" background="http://i.imgur.com/XCnBXwP.png">
<!--[if (gte mso 9)|(IE)]>
<table  align="center" cellpadding="0" cellspacing="0" border="0"><tr><td valign="top">
<![endif]-->
<table  class="maxW" style="max-width: 600px; margin: auto;" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top" align="center">


<table  border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="margin: auto;">
  <tr>
    <td bgcolor="#FFFFFF" align="left" valign="top"  style="padding:30px;">
      Content
    </td>
  </tr>
</table>


</td></tr></table>
<!--[if (gte mso 9)|(IE)]>
</td></tr></table>
<![endif]-->
</td></tr></table>

</div>
</body></html>

【讨论】:

嗯,这很好用(它是全宽的),但不是我想要的。我重新措辞了我的问题。我要的是全宽行,而不是整个电子邮件的平铺背景。这仍然超出了前景的边缘并一直重复到底部(在边缘) 嘿@zazzyzeph 你找到解决方案了吗?我很好奇你发现了什么,以及它是否适用于 Windows 10 电子邮件应用程序,因为它不支持我们在 Outlook 中用于背景图像的常用 VML 代码。 我也在挣扎

以上是关于Outlook '07/'10/'13 上的全宽背景的主要内容,如果未能解决你的问题,请参考以下文章

div上的全宽背景颜色

Bootstrap 4 - 内联表单上的全宽表单字段

移动模式我没有获得带有关闭按钮的全宽菜单

如何使文本占据其容器的全宽?

如何将表格样式设置为容器的全宽并使单元格使用宽度的百分比?

强制 Kendo UI 图表使用 Bootstrap 选项卡的全宽 [重复]