Чи існує еквівалент максимальної ширини CSS, який працює в HTML-листах?


114

Я намагаюся створити HTML-адресу електронної пошти, яка відображатиметься належним чином у всіх широко використовуваних клієнтах електронної пошти. Я загортаю всю електронну пошту в таблицю, і хотілося б, щоб вона мала ширину до 98% від доступної ширини, але не більше 800 пікселів. Подобається це: <table style="width:98%; max-width:800px;">

Але я не роблю це так, оскільки згідно з цим Outlook 2007 не підтримує властивість ширини CSS.

Натомість я роблю це: <table width="98%">

Чи можна також встановити максимальну ширину, не покладаючись на CSS?


1
Я оновив прийняту відповідь до відповіді від @MarkNugent, оскільки, здається, це прийшло до консенсусу - навіть якщо вона прийшла на 4 роки занадто пізно, щоб бути корисною для мене. :)
Тім Гудман

Відповіді:


224

Так, є спосіб емуляції max-widthза допомогою таблиці, таким чином, ви отримуєте як чуйну, так і зручну для Outlook компонування. Більше того, це рішення не потребує умовних коментарів.

Припустимо , ви хочете еквівалент центрированное divз max-widthз 350px. Ви створюєте таблицю, встановлюєте ширину 100%. У таблиці є три комірки підряд. Встановіть ширину центру TDна 350(використовуючи widthатрибут HTML , а не 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/


18
Це найкраща відповідь тут всім ^^^. Ігноруйте прийняту відповідь та умовну відповідь.
Нік Меннінг

4
Для того, щоб зберегти когось ще деякий час, принаймні один із цих порожніх <td> елементів необхідний, інакше <td> із вмістом розтягнеться, щоб заповнити весь <tr>. Але це, безумовно, найкраще рішення із запропонованих.
Кріс Стрікленд

2
@Phyllis Sutherland Ви можете спробувати видалити вбудований розмір img та замінити його на:style="max-width: 100%; height: auto; width: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;"
morespace54

5
будьте обережні, щоб не додавати одиниці до внутрішньої ширини, як я це робив, інакше це не працює! тобто не робіть width = "
350px

3
@PhyllisSutherland знайшов виправлення для зображень: <img src="file.jpg" "width="350" alt="" style="display:block;width:100%" /> litmus.com/community/discussions/…
cbron

34

Існує хитрість, яку ви можете зробити для Outlook 2007, використовуючи умовні коментарі html.
Нижче наведений код гарантує, що таблиця Outlook шириною 800 пікселів, її не максимальна ширина, але вона працює краще, ніж дозволяти таблиці охоплювати все вікно.

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

6
відмінна пропозиція, але оскільки це селектор ідентифікаторів, а не клас, ви врятуєте деякий текст, використовуючи ширину attr на елементі таблиці
Steve Wasiura

Це чудово. За винятком однієї проблеми, встановивши ширину, Outlook не дозволить електронній пошті зменшитись менше, ніж задані параметри. Якщо не встановити ширину, електронна пошта розшириться на весь екран. Виберіть свою отруту :)
Координатор

13

Коротка відповідь: ні.

Довга відповідь:

Виправлені формати краще працюють для HTML-листів. На мій досвід, вам найкраще робити вигляд, що це 1999 рік, коли справа доходить до HTML-листів. Будьте явними і використовуйте атрибути HTML (width = "650"), де це можливо, у визначеннях таблиці, а не CSS (style = "width: 650px"). Використовуйте фіксовану ширину, без відсотків. Ширина столу шириною 650 пікселів - безпечна ставка. Використовуйте вбудований CSS для встановлення властивостей тексту.

Справа не в тому, що працює в "HTML-адресах електронної пошти", а в безлічі клієнтів електронної пошти та їх обмеженій (а іноді навмисно, у випадку Gmail, Hotmail тощо) здатності виводити HTML.


Так, я цього і очікував, але я подумав, що запитаю.
Тім Гудман

35
Якщо встановити фіксовану ширину 650, ваші електронні листи будуть виглядати жахливо у клієнтах мобільної пошти.
DrewB

6
-1: Це виглядає жахливо, оскільки мобільні пристрої мають порівняно невеликі розміри в реальному світі. Це означає, що без масштабування та панорамування текст у ваших малюнках буде нечитано малим. Погляньте на посібник з монітора кампанії "Взаємний дизайн електронної пошти" .
Карл Горкі

1
-1 також тому, що я щойно вирішив це і в мобільних клієнтах, і фіксована ширина була саме моєю проблемою.
Брайан Фітцджеральд

7
Рік - 2015 рік. Мобільні пристрої є скрізь. Ви кажете забути про мобільні пристрої для дурного світогляду? Я кажу, забудь про світогляд. І кожен інший лайний продукт від Microsoft.
refaelio

5

Трохи спізнившись на вечірку, але це вийде. Я залишив приклад у 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]-->

Ось ще один приклад цього використання: чуйні повідомлення про підтвердження замовлення для мобільних пристроїв?


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>

Чи можете ви навести більш стислий приклад, там є багато речей, які не потрібні для вирішення питання
EdL

@EdL ідея полягає в тому, що це найбільш стислий спосіб отримати зручну електронну пошту max-width. Вся ця річ замінила б <div style="max-width: ...px">...</div>. Щодо електронного листа, над яким я працював, коли знайшов цю суть, це було єдине рішення, яке дозволило виглядати все правильно в Outlook 2010, 2013 та 2016
henry

@henry Я більше звертався до всіх атрибутів розміру шрифту на планшетному ПК тощо. Зображення є хитрим, тому що якщо ви не вкажете як атрибут width = "500", де 500 - ширина пікселів, вигляд зробить зображення в повний розмір ( wrt. файл зображення), як правило, це призводить до фіксованої ширини.
EdL

Залишаючи це так, бо це не мій код - я просто цитую його з суті, - але я зробив це вікі спільноти. Я вважаю , що це необхідно явно вказати 0px paddingз і marginS, а також 0 cellpaddingі cellspacing. Можливо, уточнюючи, line-heightчи працювала б заміною для font-sizeзаповнення часу, коли heightце не дотримується (я хотів би перевірити його на всіх trs, а потім на всіх tds, щоб точно побачити, де це потрібно). @EdL, якщо вам вдасться отримати легше рішення, а також це буде дивовижно - будь ласка, опублікуйте це тут і в тій пов'язаній суті
Генрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.