電子郵件設計:從零製作一個HTML電子郵件模板

來源:互聯網
上載者:User

文章簡介:從頭開始構建一個HTML電子郵件模板.

demodownload

最好的理解方式就是從頭開始自己動手實施的過程。今天,我們要做的只是用於電子郵件設計,從頭開始構建一個HTML電子郵件模板。

Pierre Borodin提供
  • 使用的字型是Oil Can、Source Sans Pro和Mission Script提供
  • 社交媒體表徵圖來自於Metrize Icons。
  • 正如我們前面的教程中討論的一樣,HTML郵件需要一個XHTML文件類型:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />         <title>Demystifying Email Design</title>         <meta name="viewport" content="width=device-width, initial-scale=1.0"/>     </head> </html> 

    接下來我們可以開始構建其餘的結構。

    <body style="margin: 0; padding: 0;"> <table border="1" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> Hello! </td> </tr> </table> </body>

    如果屬性存在於HTML,可以用來替代CSS的樣式。

    現在在表格容器內放置一個600px寬度的表格,並且讓他置中。600px是一個安全的最大寬度,使用你的郵件在案頭和Web郵件用戶端在大多數的螢幕解析度下顯示的最舒服。

    使用寬度的屬性替代CSS來設定這個寬度。HTML電子郵件開發的黃金法則是:如果一個屬性存在於HTML中,絕對使用標籤屬性而不使用CSS樣式

    我們將使用這個表格來替代我們的標題“Hello!”:

    <table align="center" border="1" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;">     <tr>         <td>         Hello!         </td>     </tr> </table>     

    這裡看得可能會有點暈,使用上面的表格代替第一個表格中的標題"Hello!"——大漠

    整體的代碼如下:

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td>             <table align="center" border="1" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;">                 <tr>                     <td>                         Hello!                     </td>                 </tr>             </table>         </td>     </tr> </table> 

    我們已經添加了一個內聯樣式,設定border-collapse的屬性值為collapse。如果我們不這樣做,新版本的Outlook將會給我們的表格與邊框之間添加一個小的空間距。

    <table border="1" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <table align="center" border="1" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;"> <tr> <td> Row 1 </td> </tr> <tr> <td> Row 2 </td> </tr> <tr> <td> Row 3 </td> </tr> </table> </td> </tr> </table>

    現在根據設計給他們設定顏色。bgcolor是有效HTML 屬性,我們使用這個屬性來替代CSS的background-color屬性來設定背景顏色。永遠記住要使用完整的6個完整的十六進位編碼,如果使用三個簡寫字元,不總是有效

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td>             <table align="center" border="1" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;">                 <tr>                     <td bgcolor="#70bbd9">                         Row 1                     </td>                 </tr>                 <tr>                     <td bgcolor="#ffffff">                         Row 2                     </td>                 </tr>                 <tr>                     <td bgcolor="#ee4c50">                         Row 3                     </td>                 </tr>             </table>         </td>     </tr> </table>     

    好的,接下來我們將重點放在第一行。我們在儲存格上調整內距(padding),然後插入我們需要的映像。

    <tr><td style="font-size: 0; line-height: 0;" height="10"> </td></tr>

    還請注意,在td標籤上使用padding還算是安全的,但在div或p標籤上,他們表現得更加不可預測。

    因此,我們將使用一些行內CSS給儲存格添加內距padding。然後,我們將插入我們的圖片,添加alt屬性文本和style="display:block;",這個是一個常用來修複一些電子郵件用戶端圖片下面空白間距。我們通過在td標記中添加align="center"將映像置中顯示。我們還將添加一個重要的alt標籤,因為我們郵件載入之後,在多數情況下,圖片是關閉的。

    注意:如果你的頭部的內容很重要,在頭部中不要僅僅使用一個映像。記住,大多數郵件用戶端把映像關閉,所以,要是你的電子郵件很重要,不要使用圖片載入進來。在這個例子中,我們的頭部是非常多餘的。

    <td align="center" bgcolor="#70bbd9" style="padding: 40px 0 30px 0;">     <img src=http://www.webjx.com/css/"images/h1.gif" alt="Creating Email Magic" width="300" height="230" style="display: block;" /> </td>            

    現在我們給主內容添加一個三行的表格——一行是頭部,一行是內容介紹和包含兩列的一行。我們把表格的寬度設計為100%而不是使用一個固定的像素值。因為這有助於我們實現一個響應式的電子郵件。如果你總是給每個東西的寬度設定具體的像素,你就需要要媒體查詢中覆蓋更多的樣式。如果你嵌套的表格的寬度是基於百分比,當你調整父元素的寬度,一切都將相應的會調整。

    <td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">     <table border="1" cellpadding="0" cellspacing="0" width="100%">         <tr>             <td>                 Row 1             </td>         </tr>         <tr>             <td>                 Row 2             </td>         </tr>         <tr>             <td>                 Row 3             </td>         </tr>     </table> </td> 

    現在,我們將新增內容,並給中間的儲存格添加一些內距(padding)。

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td>             Lorem ipsum dolor sit amet!         </td>     </tr>     <tr>         <td style="padding: 20px 0 30px 0;">             Lorem ipsum dolor sit amet ...         </td>     </tr>     <tr>         <td>             Row 3         </td>     </tr> </table> 

    現在,我們要在第三行中添加兩列內容。因為我們想要在兩個儲存格之間設定一個margin,但大家都知道表格是不支援margin,我們需要建立一個三列的表格,將一個空的儲存格放在兩列之間。

    儘管我非常喜歡堅持使用百分比,但當你有一個特定大小的內容時,很難將它轉換成一個百分比(在這個例子中,列設定為48.1%可能會混淆)。因為這個原因,我們有兩個260px寬的映像,我們將建立260px的列,並在兩列中間建立一個20px寬的空儲存格。(總計是540px,這是因為我們總寬度是600px,減去兩邊填充的30px內距)。確保在間距的儲存格中設定你的字型(font-size)和行高(line-height)為0和插入空白字元 。

    我們還將給這兩個儲存格添加valign="top",讓內容垂直方向在頂部對齊。儲存格垂直方向的預設值是middle。

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td width="260" valign="top">             Column 1         </td>         <td style="font-size: 0; line-height: 0;" width="20">                       </td>         <td width="260" valign="top">             Column 2         </td>     </tr> </table> 

    現在給這些列添加映像和內容。我們需要嵌套一個多行的表格,因為我們不能使用任何的colspan或rowspan標籤。我們將給映像和內容之間添加一些內距,並將他們複製到另一列。

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td width="260" valign="top">             <table border="1" cellpadding="0" cellspacing="0" width="100%">                 <tr>                     <td>                         <img src=http://www.webjx.com/css/"images/left.gif" alt="" width="100%" height="140" style="display: block;" />                     </td>                 </tr>                 <tr>                     <td style="padding: 25px 0 0 0;">                         Lorem ipsum dolor sit amet...                     </td>                 </tr>             </table>         </td>         <td style="font-size: 0; line-height: 0;" width="20">                       </td>         <td width="260" valign="top">             <table border="1" cellpadding="0" cellspacing="0" width="100%">                 <tr>                     <td>                         <img src=http://www.webjx.com/css/"images/right.gif" alt="" width="100%" height="140" style="display: block;" />                     </td>                 </tr>                 <tr>                     <td style="padding: 25px 0 0 0;">                         Lorem ipsum dolor sit amet, ...                     </td>                 </tr>             </table>         </td>     </tr> </table> 

    這裡我們使用HTML的width屬性給映像設定寬度為列寬的100%。再次地,同樣如此,如果我們的郵件是響應式,我們只需要使用媒體查詢來改變父元素的寬度。我們將不得不用像素得寫映像的高度,因為使用style="height:auto;",目前並沒有所有郵件用戶端都支援(如Outlook)。因此我們把它們設定固定的像素值。這也意味著,我們必須在媒體查詢中使用heihgt:auto !important;覆蓋映像的像素值,我們可以通過添加一個類來這樣做。當我們設定寬度為百分比,我們不需要重新覆寫。因為越少的東西需要覆蓋,越更好。

    <td bgcolor="#ee4c50" style="padding: 30px 30px 30px 30px;"> Row 3 </td>

    在這個儲存格這,我們將嵌套一個兩列的表格。

    <table border="1" cellpadding="0" cellspacing="0" width="100%">     <tr>         <td>             Column 1         </td>         <td>             Column 2         </td>     </tr> </table> 

    接下來為社交媒體表徵圖建立另一個小表格。設定他的父元素儲存格align="right"。確保這些連結圖片設定了border="0"(為了避免連結的藍色邊框)和不要忘記了給圖片添加display:block;。

    <td align="right">     <table border="0" cellpadding="0" cellspacing="0">         <tr>             <td>                 <a href="http://www.twitter.com/">                     <img src=http://www.webjx.com/css/"images/tw.gif" alt="Twitter" width="38" height="38" style="display: block;" border="0" />                 </a>             </td>             <td style="font-size: 0; line-height: 0;" width="20"> </td>             <td>                 <a href="http://www.twitter.com/">                     <img src=http://www.webjx.com/css/"images/fb.gif" alt="Facebook" width="38" height="38" style="display: block;" border="0" />                 </a>             </td>         </tr>     </table> </td> 

    現在我們添加文本和給這個儲存格設定寬度,儘管他們之前有很多空白,但為了安全起見,將這個單元設定一個寬度為75%,其他的為25%。

    <td width="75%">     ® Someone, somewhere 2013<br/>     Unsubscribe to this newsletter instantly </td> 

    到此,我們的整個布都完成了。

    W3C驗證器進行驗證,確保我們的代碼沒有問題。如果你代碼沒有問題,它會說,你已通過驗證。

    接下來我們通過Litmus來進行測試,以確保我們的電子郵件能正常工作。下面是我測試的總結:

    <td style="color: #153643; font-family: Arial, sans-serif; font-size: 24px;"> <b>Lorem ipsum dolor sit amet!</b> </td>

    我也會給其他儲存格添加內聯樣式,來美化文本:

    style="color: #153643; font-family: Arial, sans-serif; font-size: 16px; line-height: 20px;" 

    接下來我們需要給頁尾文本寫樣式,交且我們也將會整理我們的退訂連結。我們同時使用CSS樣式和HTML的<font>標籤來修飾退訂連結。使用這兩種方式是最好的,確保你的連結從不出現預設的藍色。

    <td style="color: #ffffff; font-family: Arial, sans-serif; font-size: 14px;">     ® Someone, somewhere 2013<br/>     <a href="#" style="color: #ffffff;"><font color="#ffffff">Unsubscribe</font></a> to this newsletter instantly </td>    

    到此一切都有了,也是時間清除邊框,讓他看起來更漂亮。通過編輯器的“尋找/替換”功能將border="1"替找成border="0"。

    這樣看上去它好像漂浮在白色的空間上,比較難看,所以我們去給第一個設定600px的表格添加:

    style="border: 1px solid #cccccc;" 

    現在看上去不漂移了。最後,我給第一個儲存格添加了底部為30px的內距,防止我們的郵件在某些郵箱用戶端(如Apple Mail)突然停止了,另外添加10px的頂部內距,讓我們的頁頭頂部有點空間。

    <td style="padding: 20px 0 30px 0;"> 

    就是這樣的!你只需要做最後的測試了。

    demodownload

    譯者手語:整個翻譯依照原文線路進行,並在翻譯過程略加了個人對技術的理解。如果翻譯有不對之處,還煩請同行朋友指點。謝謝!

    如需轉載,煩請註明出處:

    英文原文:http://dev.tutsplus.com/articles/build-an-html-email-template-from-scratch--webdesign-12770

    中文譯文:http://www.w3cplus.com/css/build-an-html-email-template-from-scratch.html



    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.