Skip to content

Instantly share code, notes, and snippets.

@davidspiess
Last active December 19, 2015 04:39
Show Gist options
  • Save davidspiess/5898948 to your computer and use it in GitHub Desktop.
Save davidspiess/5898948 to your computer and use it in GitHub Desktop.
Responsive Newsletter Tutorial

#Responsive Newsletter Regeln zur Erstellung von responsive Newslettern

Keine Spacer Gifs verwenden

<td width="10" height="1" style="font-size:1px; line-height:1px">&nbsp;</td>

width und height ist für das Spacing verantwortlich. height muss immer gesetzt werden und mindestens 1px betragen. font-size und line-height müssen gesetzt werden, damit Outlook das &nbsp; nicht wie normale Schrift stylt.

Achtung mit padding, margin und border

padding und border funktionieren nur auf tds ohne Nebeneffekte. Nie auf tables benutzen, es führt zu massiven Problemen. In Outlook bekommt jedes Untertd das selbe padding wie die table. Auch die Browser intepretieren tables mit padding und border verschieden. So sind tables in neuen Browser standardmäßig box-sizing: border-box gesetzt. IE 7& Outlook hingegen box-sizing: content-box.

margin sollte überhaupt nicht verwendet, siehe fehlende CSS Unterstützung

Um sicherzugehen, dass sich die Abstände immer korrekt aufspannen, ist es empfohlen Spacer TDs zu verwenden zu verwerden. border und paddings werden von Outlook in ein anderes Format umgewandelt und können vom Originalwert abweichen.

[Weiterführender Link]

Bilder richtig verwenden

<a href="#"><img src="http://smg.scnem.com/art_resource.php?sid=4o59y.pcigbt" alt="" width="44" height="39" border="0" style="display:block;" /></a>

border="0" verhindert blaue Rahmen im IE wenn ein Link gesetzt wurde. style="display:block;" entfernt einen von Outlook eingefügten Abstand unterhalb vom Bild.

Farbhexwerte nicht abkürzen

Nicht im HTML, nicht im CSS

Falsch: background:#FFF;

Richtig: background:#FFFFFF;

bg-image funktioniert nur auf body tag

body {
	background-image: url('http://smg.scnem.com/art_resource.php?sid=4o3p1.2kcrr8o');
	background-repeat: repeat-x repeat-y;
	background-position: top center;
	background-color: #ededed;
}

[Weiterführender Link]

Tabellen in Outlook

Bei responsive Newslettern werden Tabellen gefloatet, indem das Attribut align gesetzt wird. Zudem alle Tabellen mit border="0" cellpadding="0" cellspacing="0" reseten.

<table width="20" border="0" cellpadding="0" cellspacing="0" align="left">
</table>
<table width="680" border="0" cellpadding="0" cellspacing="0" align="right">
</table>

Dadurch entsteht in Outlook allerdings zwischen den Tabellen ein unvorhergesehener Abstand. Hier die Vorgehensweisen, diesen Abstand zu eleminieren.

1) Fix

Folgende Zeile im <style> Bereich einfügen:

table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }

[Weiterführender Link]

2) Fix

style="border:1px solid #Farbe der Tabelle" auf der Tabelle setzen Die Breite der Tabelle um 2px verkleinern z.B. aus 350px wird 348px.

3) Fix

Tabellen werden nicht immer mit box-sizing:content-box gerendert, sondern teilweise auch mit box-sizing:border-box. So kann es vorkommen, dass der 1px border nicht immer zur Breite der Tabelle dazugerechnet wird. Eine relativ browserkonsistente Lösung ist das vergeben einer Reset CSS Klasse.

/* Chrome, Firefox Fix */
.responsive-table {
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    display: block;
}

@media only screen and (max-width: 740px) {
    /* Chrome, Firefox Fix */
    .responsive-table {
        display: table;
    }
}

Angepasstes Beispiel von oben:

<table width="18" border="0" cellpadding="0" cellspacing="0" class="responsive-table" style="border:1px solid #FFFFFF" align="left">
</table>
<table width="678" border="0" cellpadding="0" cellspacing="0" class="responsive-table" style="border:1px solid #FFFFFF" align="right">
</table>

[Weiterführender Link]

Wie wird das ganze jetzt responsive?

Durch media queries und aligned tables.

Beispiel:

@media only screen and (max-width: 700px) {
	
	table {
		width: 100%!important;
	}
	
	img {
		max-width: 100%;
		height: auto!important;
	}
}

Alle tables bekommen eine Breite von 100%. Dadurch brechen die Tables, welche wir vorher aligned haben, automatisch um. Auch die Bilder skalieren jetzt porportional mit. Wichtig ist das setzen von !important um die inline Styles zu überschreiben.

Als nächstes setzen wir noch den Viewport für die mobilen Endgeräte. Mit folgenden Content Einstellungen ist es auch auf den meisten Android Geräten lauffähig.

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />

Umbrüche in Outlook fixen

Bei responsive Newslettern kann es in Outlook auch leicht zu Verschiebungen kommen, durch den Umstand, dass Outlook nach 1790px einen Seitenumbruch erzwingt. Aligned Tables werden zu den 1790px dazugerechnet. Also 2 gefloatete Tabellen die jeweils 400px hoch sind, erzeugen eine Gesamthöhe von 800px. Die einzige zuverlässige Methode diesen Bug zu verhindern, ist keine Tabelle höher als 1790px werden zu lassen. Hierfür muss die wrapper table, welche die Hintergrundfarbe vergibt durch ein span ersetzt werden.

Beispiel:

<body bgcolor="#444444" style="min-height:1000px;">
    <span style="display:block; background:#444444; padding:0 30px;">
        <!-- Sobald Table höher als 1790px werden droht, neue Tabelle beginnen -->
        <table width="700" border="0" cellpadding="0" cellspacing="0" align="center" bgcolor="#444444"></table>
        <table width="700" border="0" cellpadding="0" cellspacing="0" align="center" bgcolor="#444444"></table>
        <table width="700" border="0" cellpadding="0" cellspacing="0" align="center" bgcolor="#444444"></table>
    </span>
</body>

[Weiterführender Link]

Conditional Comments

Outlook lässt sich per Conditional Comments ansprechen. Das eröffnet uns z.B. die Möglichkeit Fix1 des Outlook Table Gaps ausschließlich auf Outlook anzuwenden.

<!--[if gte mso 9]>
<style type="text/css">
	table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
</style>
<![endif]-->

Um das Problem zu fixen, können wir Conditional Comments benutzen und nur in Outlook die Tables nochmal in einer übergeordneten table wrappen

<!--[if gte mso 9]>
<table border="0" cellpadding="0" cellspacing="0" width="660">
	<tr>
		<td width="330">
<![endif]-->
			<table align="left" border="0" cellpadding="0" cellspacing="0" width="328" style="border:1px solid #FFFFFF;">
<!--[if gte mso 9]>
		</td>
		<td width="330">
<![endif]-->
			<table align="right" border="0" cellpadding="0" cellspacing="0" width="328" style="border:1px solid #FFFFFF;">
<!--[if gte mso 9]>
		</td>
	</tr>			 
</table>
<![endif]-->

[Weiterführender Link]

CSS Unterstützung

Für eine detailierte Übersicht, welche CSS Befehle in welchem Email Client funktionieren, die folgende Tabelle zu Rate ziehen:

[Weiterführender Link]

@davidspiess
Copy link
Author

Weitere sehr detaillierte Anleitung
http://www.leemunroe.com/building-html-email/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment