2010-03-11 38 views
82

Tôi đang cố gắng tạo một email HTML sẽ hiển thị đúng trong tất cả các ứng dụng email được sử dụng rộng rãi. Tôi đang gói toàn bộ email trong một bảng và tôi muốn nó có chiều rộng lên tới 98% chiều rộng có sẵn, nhưng không lớn hơn 800 pixel. Như thế này: <table style="width:98%; max-width:800px;">Có tương đương với chiều rộng tối đa CSS hoạt động trong email HTML không?

Nhưng tôi không làm theo cách đó, vì according to this Outlook 2007 không hỗ trợ thuộc tính chiều rộng CSS.

Thay vào đó, tôi đang làm điều này: <table width="98%">

Có cách nào cũng để thiết lập một max-width mà không dựa vào CSS?

+1

Tôi đã cập nhật câu trả lời được chấp nhận cho một từ @MarkNugent vì dường như đã thu hút được sự đồng thuận - ngay cả khi nó đến 4 năm quá muộn để có ích cho tôi. :) –

Trả lời

158

Vâng, có một cách để bắt chước max-width sử dụng một bảng, do đó cung cấp cho bạn cả bố cục đáp ứng và thân thiện với Outlook. Hơn nữa, giải pháp này không yêu cầu các bình luận có điều kiện.

Giả sử bạn muốn tương đương với một tâm là div với max-width trong số 350px. Bạn tạo một bảng, đặt chiều rộng là 100%. Bảng có ba ô liên tiếp. Đặt chiều rộng của trung tâm TD thành 350 (bằng cách sử dụng thuộc tính HTML width, không phải CSS), và ở đó bạn đi.

Nếu bạn muốn nội dung của mình được căn chỉnh trái thay vì căn giữa, chỉ cần bỏ trống ô đầu tiên.

Ví dụ:

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

Trong jsfiddle tôi cho bàn biên giới, do đó bạn có thể xem những gì đang xảy ra, nhưng rõ ràng là bạn sẽ không muốn một trong cuộc sống thực:

http://jsfiddle.net/YcwM7/

+16

Đây là câu trả lời đúng nhất ở đây mọi người ^^^. Bỏ qua câu trả lời được chấp nhận và câu trả lời có điều kiện. –

+3

Chỉ cần để tiết kiệm cho người khác một thời gian, ít nhất một trong số những thành phần rỗng là cần thiết, nếu không thì với nội dung sẽ kéo dài để lấp đầy toàn bộ . Nhưng đây chắc chắn là giải pháp tốt nhất của những người được cung cấp. –

+14

không hoạt động nếu nội dung là hình ảnh –

13

Câu trả lời ngắn gọn: không.

Câu trả lời dài:

Định dạng cố định hoạt động tốt hơn cho email HTML. Theo kinh nghiệm của tôi, tốt nhất bạn nên giả vờ là năm 1999 khi nói đến email HTML. Hãy rõ ràng và sử dụng các thuộc tính HTML (width = "650") khi có thể trong định nghĩa bảng của bạn, không phải CSS (style = "width: 650px"). Sử dụng chiều rộng cố định, không có tỷ lệ phần trăm. Chiều rộng bảng rộng 650 pixel là đặt cược an toàn. Sử dụng CSS nội tuyến để đặt thuộc tính văn bản.

Nó không phải là vấn đề của những gì hoạt động trong "email HTML", mà là rất nhiều khách hàng email và hạn chế (và đôi khi cố ý như vậy trong trường hợp Gmail, Hotmail, vv) khả năng hiển thị HTML.

+0

Vâng, đó là loại những gì tôi mong đợi, nhưng tôi figured tôi muốn hỏi. –

+0

+1: HTML trong email là một chủ đề khủng khiếp vì chất lượng khác nhau của các ứng dụng email. Vì một số lý do, ngay cả những người làm cho một điểm chạy trình duyệt mới nhất dường như không bận tâm nâng cấp phần mềm email của họ. Có một số ứng dụng thư khách hàng lỗi thời được sử dụng phổ biến và thậm chí tệ hơn, các ứng dụng thư thường tụt hậu so với các trình duyệt trong ngày. Đôi khi bạn thực sự tốt hơn chỉ cần gửi văn bản đơn giản nếu bạn muốn chắc chắn mọi người sẽ thấy cùng một điều. – Spudley

+29

Đặt chiều rộng cố định là 650 sẽ làm cho email của bạn trông khủng khiếp trong các ứng dụng email di động. – DrewB

33

Có một mẹo bạn có thể làm cho Outlook 2007 bằng cách sử dụng nhận xét html có điều kiện.
Mã bên dưới sẽ đảm bảo rằng bảng Outlook rộng 800px, chiều rộng không tối đa của nó nhưng nó hoạt động tốt hơn để cho phép khoảng bảng trên toàn bộ cửa sổ.

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

gợi ý tuyệt vời, nhưng vì nó là một bộ chọn id và không phải là một lớp, bạn nên lưu một số đánh máy bằng cách sử dụng độ rộng attr trên phần tử bảng –

+0

Điều này là rất tốt. Ngoại trừ một vấn đề, bằng cách thiết lập chiều rộng, Outlook sẽ không để cho email co lại bất kỳ nhỏ hơn kích thước đã cho. Bằng cách không đặt chiều rộng, email sẽ mở rộng ra toàn bộ màn hình. Chọn chất độc của bạn :) –

4

Bit trễ cho bữa tiệc, nhưng điều này sẽ hoàn thành. Tôi đã để lại ví dụ tại 600, vì đó là những gì hầu hết mọi người sẽ sử dụng:

Tương tự ví dụ của Shay ngoại trừ này cũng bao gồm tối đa chiều rộng để làm việc với những khách hàng còn lại có hỗ trợ, cũng như phương pháp thứ hai để ngăn chặn việc mở rộng (truy vấn phương tiện) cần thiết cho Outlook '11.

Trong đầu:

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

Trong cơ thể:

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

Dưới đây là một ví dụ về điều này trong sử dụng: Responsive order confirmation emails for mobile devices?

0

Đây là giải pháp phù hợp với tôi

https://gist.github.com/elidickinson/5525752#gistcomment-1649300, nhờ @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

Bạn có thể cung cấp ví dụ ngắn gọn hơn không, có rất nhiều thứ trong đó không cần thiết để giải quyết câu hỏi – EdL

+0

@EdL ý tưởng là _is_ cách súc tích nhất để nhận được 'độ rộng tối đa 'thân thiện với email. Toàn bộ điều này sẽ thay thế '

...
'. Đối với email tôi đã làm việc trên khi tôi tìm thấy ý chính này, đây là giải pháp duy nhất làm cho mọi thứ trông ổn trong Outlook 2010, 2013 và 2016. – henry

+0

Điều này có hoạt động với hình ảnh không? – elliottregan

Các vấn đề liên quan