Existe um equivalente de largura máxima CSS que funciona em E-mails HTML?
estou a tentar criar um e-mail HTML que irá aparecer correctamente em todos os clientes de E-mail amplamente utilizados. Estou embrulhando todo o e-mail em uma tabela, e eu gostaria que tivesse uma largura que é até 98% da largura disponÃvel, mas não maior que 800 pixels. Comer:
<table style="width:98%; max-width:800px;">
Mas eu não estou fazendo isso dessa maneira, já que de acordo com este Outlook 2007 não suporta a propriedade de largura CSS.
Em vez disso, vou fazer isto.:<table width="98%">
Existe alguma maneira de também definir um largura máxima sem contar com CSS?
5 answers
Sim, há uma maneira de emular {[[1]} usando uma tabela, dando - lhe assim um layout sensÃvel e amigo do Outlook. Além disso, esta solução não requer comentários condicionais.
Suponha que quer o equivalente a um div
centrado com max-width
de 350px
. Você cria uma tabela, configura a largura para 100%
. A tabela tem três celas seguidas. Configure a largura do center TD
para 350
(usando o atributo HTML width
, não o CSS), e aà vai você.
Se quiser o seu o conteúdo alinhado à esquerda em vez de centrado, basta deixar de fora a primeira célula vazia.
Exemplo:
<table border="0" cellspacing="0" width="100%">
<tr>
<td></td>
<td width="350">The width of this cell should be a maximum of
350 pixels, but shrink to widths less than 350 pixels.
</td>
<td></td>
</tr>
</table>
No jsfiddle eu dou à mesa uma fronteira para que possas ver o que se passa, mas obviamente não queres uma na vida real.
Existe um truque que pode fazer para o Outlook 2007 usando comentários html condicionais.
O código abaixo irá certificar-se de que a tabela Outlook tem 800px de largura, não é de largura máxima, mas funciona melhor do que deixar a tabela passar por toda a janela.
<!--[if gte mso 9]>
<style>
#tableForOutlook {
width:800px;
}
</style>
<![endif]-->
<table style="width:98%;max-width:800px">
<!--[if gte mso 9]>
<table id="tableForOutlook"><tr><td>
<![endif]-->
<tr><td>
[Your Content Goes Here]
</td></tr>
<!--[if gte mso 9]>
</td></tr></table>
<![endif]-->
<table>
A resposta curta: não.
A resposta longa:
Os formatos fixos funcionam melhor para E-mails HTML. Pela minha experiência, é melhor fingir que estamos em 1999 quando se trata de E-mails HTML. Seja explÃcito e use atributos HTML (width="650") sempre que possÃvel em suas definições de tabela, não CSS (style="width:650px"). Usa larguras fixas, sem percentagens. Uma largura de mesa de 650 pixels de largura é uma aposta segura. Use o CSS incorporado para definir as propriedades do texto.
Não é uma questão do que funciona em "HTML emails", but rather the plethora of email clients and their limited (and sometimes propositadamente so in the case of Gmail, Hotmail etc) ability to render HTML.Semelhante ao exemplo de Shay excepto este também inclui a largura máxima para trabalhar no resto dos clientes que têm suporte, bem como um segundo método para evitar a expansão (pesquisa de mÃdia) que é necessária para o Outlook '11.
Na cabeça:
<style type="text/css">
@media only screen and (min-width: 600px) { .maxW { width:600px !important; } }
</style>
No corpo:
<!--[if (gte mso 9)|(IE)]><table width="600" align="center" cellpadding="0" cellspacing="0" border="0"><tr><td><![endif]-->
<div class="maxW" style="max-width:600px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td>
main content here
</td>
</tr>
</table>
</div>
<!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]-->
Aqui está outro exemplo disto em uso: responsivo pedir e-mails de confirmação para dispositivos móveis?
Esta é a solução que funcionou para mim
Https://gist.github.com/elidickinson/5525752#gistcomment-1649300, graças a @philipp-klinz
<table cellpadding="0" cellspacing="0" border="0" style="padding:0px;margin:0px;width:100%;">
<tr><td colspan="3" style="padding:0px;margin:0px;font-size:20px;height:20px;" height="20"> </td></tr>
<tr>
<td style="padding:0px;margin:0px;"> </td>
<td style="padding:0px;margin:0px;" width="560"><!-- max width goes here -->
<!-- PLACE CONTENT HERE -->
</td>
<td style="padding:0px;margin:0px;"> </td>
</tr>
<tr><td colspan="3" style="padding:0px;margin:0px;font-size:20px;height:20px;" height="20"> </td></tr>
</table>