2010-03-11 24 views
82

我試圖創建一個HTML電子郵件,將在所有廣泛使用的電子郵件客戶端中正確顯示。我將整個電子郵件包裹在一個表格中,我希望它的寬度達到可用寬度的98%,但不超過800像素。像這樣: <table style="width:98%; max-width:800px;">在HTML電子郵件中是否有等效的CSS最大寬度?

但是我不這樣做,因爲according to this Outlook 2007不支持CSS寬度屬性。

相反,我這樣做: <table width="98%">

有什麼辦法還設定了最大寬度,而不依賴於CSS?

+1

我已經更新了@MarkNugent所接受的答案,因爲這似乎已經引起了共識 - 即使它已經過了4年太晚而無法對我有用。 :) – 2016-05-12 22:45:51

回答

158

是的,有一種方法使用模擬max-width一張桌子,因此給你響應和Outlook友好的佈局。而且,這個解決方案不需要有條件的評論。

假設您想要中心div的等價物與max-width350px。您創建一個表格,將寬度設置爲100%。該表格有三個單元格。將中心的寬度TD設置爲350(使用HTML width屬性,而不是CSS),然後就可以了。

如果你希望你的內容左對齊而不是居中,那就省略第一個空單元格。

例子:

<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> 

在的jsfiddle我給桌上的邊界,所以你可以看到發生了什麼事情,但顯然你不希望在現實生活中的一個:

http://jsfiddle.net/YcwM7/

+16

這是最好的答案在這裏每個人^^^。忽略接受的答案和有條件的答案。 – 2014-08-25 18:40:27

+3

只是爲了節省別人一些時間,至少有一個空​​元素是必要的,否則​​與內容將延伸填補整個。但這絕對是所提供的最佳解決方案。如果內容是圖片 – 2015-01-22 00:54:37

+14

不起作用 – 2015-05-11 14:21:05

13

簡而言之:沒有。

長答案:

固定格式對HTML電子郵件更好。根據我的經驗,你最好假裝它是1999年的HTML電子郵件。明確地使用HTML屬性(width =「650」),儘可能在表格定義中使用,而不是CSS(style =「width:650px」)。使用固定寬度,無百分比。寬度爲650像素的桌子寬度是安全的。使用內聯CSS設置文本屬性。

這不是一個在「HTML電子郵件」中起作用的問題,而是大量的電子郵件客戶端及其有限的(有時故意在Gmail,Hotmail等情況下)呈現HTML的能力。

+0

是的,這是我的預期,但我想我會問。 – 2010-03-11 15:58:56

+0

+1:電子郵件中的HTML是一個可怕的主題,因爲電子郵件客戶端的質量不同。出於某種原因,即使是運行最新瀏覽器的人也不會打擾升級他們的電子郵件軟件。有一些常用的郵件客戶端已經過時了,更糟糕的是,郵件客戶端通常還是落後於當天的瀏覽器。如果你想確保每個人都能看到相同的東西,有時你發送純文本會更好。 – Spudley 2011-09-01 19:40:38

+29

設置650的固定寬度將使您的電子郵件在移動電子郵件客戶端中看起來很糟糕。 – DrewB 2012-11-08 17:18:38

33

有一個技巧,你可以使用條件html註釋爲Outlook 2007做。
下面的代碼將確保Outlook表格寬度爲800px,但不是最大寬度,但它比使表跨越整個窗口更好。

<!--[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> 
+4

出色的建議,但由於它是一個ID選擇器,而不是一個類,你可以使用表元素上的寬度attr來節省一些打字 – 2012-12-18 15:16:59

+0

這太好了。除了一個問題,通過設置寬度,Outlook不會讓電子郵件收縮小於給定的尺寸。通過不設置寬度,電子郵件將擴展到整個屏幕。選擇你的毒藥:) – 2014-04-02 05:03:51

4

對晚會有點遲,但這會完成。我離開的例子,在600,因爲這是大多數人會用什麼:

類似吉文的例子,除了這還包括最大寬度對那些具有支持客戶的其他工作,以及一第二種方法來阻止Outlook'11所需的擴展(媒體查詢)。

在頭:

<style type="text/css"> 
    @media only screen and (min-width: 600px) { .maxW { width:600px !important; } } 
    </style> 

在機身:

<!--[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]--> 

下面是使用另外一個例子:Responsive order confirmation emails for mobile devices?

0

這是爲我工作的解決方案

https://gist.github.com/elidickinson/5525752#gistcomment-1649300,感謝@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">&nbsp;</td></tr> 
    <tr> 
     <td style="padding:0px;margin:0px;">&nbsp;</td> 
     <td style="padding:0px;margin:0px;" width="560"><!-- max width goes here --> 

      <!-- PLACE CONTENT HERE --> 

     </td> 
     <td style="padding:0px;margin:0px;">&nbsp;</td> 
    </tr> 
    <tr><td colspan="3" style="padding:0px;margin:0px;font-size:20px;height:20px;" height="20">&nbsp;</td></tr> 
</table> 
+0

您能否提供一個更簡潔的例子,那裏有很多東西不是解決問題所必需的 – EdL 2017-03-11 20:43:49

+0

@EdL這個想法是_is_是獲得電子郵件友好的'max-width'最簡明的方法。這整個事情將取代'

...
'。對於我在發現這個要點時所研究的電子郵件,這是唯一能夠讓Outlook 2010,2013和2016的外觀正確的解決方案。 – henry 2017-03-12 20:04:08

+0

這是否適用於圖像? – elliottregan 2017-03-13 18:17:47

相關問題