HTML e-postalarında çalışan CSS maksimum genişliğinin bir eşdeğeri var mı?


115

Yaygın olarak kullanılan tüm e-posta istemcilerinde düzgün görüntülenecek bir HTML e-postası oluşturmaya çalışıyorum. Tüm e-postayı bir tabloya sarıyorum ve mevcut genişliğin% 98'ine kadar ancak 800 pikselden fazla olmayan bir genişliğe sahip olmasını istiyorum. Bunun gibi: <table style="width:98%; max-width:800px;">

Ancak bu şekilde yapmıyorum, çünkü bu Outlook 2007'ye göre CSS genişlik özelliğini desteklemiyor.

Bunun yerine şunu yapıyorum: <table width="98%">

CSS'ye güvenmeden maksimum genişlik ayarlamanın bir yolu var mı?


1
Kabul edilen cevabı @MarkNugent'ten gelen cevaba güncelledim, çünkü bu bir fikir birliğine varmış gibi görünüyor - benim için yararlı olmak için 4 yıl geç gelse bile. :)
Tim Goodman

Yanıtlar:


225

Evet, max-widthbir tablo kullanarak öykünmenin bir yolu var , böylece size hem duyarlı hem de Outlook dostu bir düzen sağlıyor. Dahası, bu çözüm koşullu yorumlar gerektirmez.

Eğer merkezli bir eşdeğer istediğinizi varsayalım divile max-widtharasında 350px. Bir tablo oluşturursunuz, genişliği olarak ayarlarsınız 100%. Tabloda arka arkaya üç hücre bulunur. Merkezi genişliğini ayarlayın TDiçin 350(HTML kullanarak widthniteliği değil, CSS) ve oraya gitmek.

İçeriğinizin ortalanmak yerine sola hizalanmasını istiyorsanız, ilk boş hücreyi atlamanız yeterlidir.

Misal:

<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'da, neler olduğunu görebilmeniz için masaya bir sınır veriyorum, ama tabii ki gerçek hayatta bir tane istemezsiniz:

http://jsfiddle.net/YcwM7/


18
İşte buradaki en iyi cevap budur ^^ ^^ Kabul edilen yanıtı ve koşullu yanıtı göz ardı edin.
Nick Manning

4
Bir başkasını biraz zaman kazanmak için, bu boş <td> öğelerinden en az biri gereklidir, aksi takdirde içeriğe sahip <td>, <tr> 'nin tamamını dolduracak şekilde uzayacaktır. Ancak bu kesinlikle sunulanlar arasında en iyi çözümdür.
Chris Strickland

2
@Phyllis Sutherland Satır içi img boyutunu kaldırıp yerine şu şekilde 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;"
koymayı deneyebilirsiniz

5
Yaptığım gibi iç genişliğe birim eklememeye dikkat edin, yoksa işe yaramaz! ör. genişlik = "
350px

3
@PhyllisSutherland resimler için bir düzeltme buldu: <img src="file.jpg" "width="350" alt="" style="display:block;width:100%" /> litmus.com/community/discussions/…
cbron

35

Koşullu html yorumlarını kullanarak Outlook 2007 için yapabileceğiniz bir numara var.
Aşağıdaki kod, Outlook tablosunun maksimum genişliği değil, 800 piksel genişliğinde olmasını sağlar, ancak tablonun tüm pencereye yayılmasına izin vermekten daha iyi çalışır.

<!--[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
mükemmel bir öneri, ancak bu bir sınıf değil, bir kimlik seçici olduğundan, tablo öğesindeki genişlik özniteliğini kullanarak yazı yazmaktan tasarruf edersiniz
Steve Wasiura

Bu harika. Outlook, tek bir sorun dışında, genişliği ayarlayarak e-postanın verilen boyutlardan daha küçük küçülmesine izin vermez. Genişliği ayarlamadan e-posta tüm ekrana genişleyecektir. Zehrini seç :)
Koordinatör

13

Kısa cevap: hayır.

Uzun cevap:

Sabit formatlar, HTML e-postaları için daha iyi çalışır. Tecrübelerime göre, HTML e-postaları söz konusu olduğunda 1999'daymış gibi davranmanız en iyisidir. Açık olun ve tablo tanımlarınızda mümkün olan yerlerde CSS değil (style = "width: 650px") HTML niteliklerini (width = "650") kullanın. Sabit genişlikler kullanın, yüzdeler kullanmayın. 650 piksel genişliğinde bir masa genişliği güvenli bir bahistir. Metin özelliklerini ayarlamak için satır içi CSS kullanın.

Bu, "HTML e-postalarında" neyin işe yaradığıyla ilgili değil, daha ziyade e-posta istemcilerinin bolluğu ve bunların sınırlı (ve bazen kasıtlı olarak Gmail, Hotmail vb. Durumlarda) HTML oluşturma yetenekleri.


Evet, beklediğim buydu, ama soracağımı düşündüm.
Tim Goodman

35
650 olarak sabit bir genişlik ayarlamak, e-postalarınızın mobil e-posta istemcilerinde korkunç görünmesine neden olur.
DrewB

6
-1: Korkunç görünüyor çünkü mobil cihazlar gerçek dünyada nispeten küçük boyutlara sahip. Bu, yakınlaştırma ve kaydırma olmadan tasarımlarınızdaki metinlerin okunamayacak kadar küçük olacağı anlamına gelir. Duyarlı E-posta Tasarımı Kampanya İzleme kılavuzuna bir göz atın .
Karl Horky

1
-1 ayrıca mobil istemcilerde de bununla uğraştığım ve sabit bir genişliğe sahip olduğum için tam olarak benim sorunumdu.
Brian FitzGerald

7
2015 yılı. Mobil cihazlar her yerde. Aptal görünüm için mobil cihazları unutmayı mı söylüyorsun? Görünümü unutun diyorum. Ve Microsoft'un her boktan ürünü.
refaelio

5

Partiye biraz geç ama bu işi halledecek. Örneği 600'de bıraktım, çünkü çoğu insan bunu kullanacak:

Shay'in örneğine benzer, ancak bunun dışında desteğe sahip diğer istemcilerde çalışmak için maksimum genişlik ve Outlook '11 için gerekli olan genişletmeyi (medya sorgusu) önlemek için ikinci bir yöntem de içerir.

Kafada:

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

Vücutta:

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

İşte kullanımda olan başka bir örnek: Mobil cihazlar için duyarlı sipariş onayı e-postaları?


0

Bu benim için çalışan çözüm

https://gist.github.com/elidickinson/5525752#gistcomment-1649300 , @ philipp-klinz sayesinde

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

Daha kısa bir örnek
verebilir misiniz

Fikri @EdL olmasıdır olan e-posta dostu almanın en özlü yolu max-width. Bütün bu şey yerini alacaktı <div style="max-width: ...px">...</div>. Bu özü bulduğumda üzerinde çalıştığım e-posta için, Outlook 2010, 2013 ve 2016'da her şeyin doğru görünmesini sağlayan tek çözüm
henry

@henry Ben daha çok hücre dolgulu yazı tipi boyutu özniteliklerine vb. atıfta bulunuyordum. Görüntüler aldatıcıdır çünkü öznitelik olarak width = "500" belirtmezseniz, burada 500 piksel olarak genişliktir görünüm, görüntüleri tam boyuta getirecektir ( wrt. görüntü dosyası) bu genellikle sabit genişliklerle sonuçlanır.
EdL

Bunu olduğu gibi bırakmak benim kodum olmadığı için - sadece özetten alıntı yapıyorum - ama onu bir topluluk wiki yaptım. İnanması olduğunu açıkça belirtmek için gerekli 0px paddings ve margins yanı sıra 0 cellpaddingve cellspacing. Zamanlara uyulmadığı zaman doldurmanın line-heightbir ikame olarak işe yarayacağını belirtmek mümkündür ( tam olarak nerede gerekli olduğunu görmek için tüm s ve sonra tüm s üzerinde test etmek isterim ). @EdL, bunun yanı sıra çalışan daha hafif bir çözüm bulabilirseniz harika olurdu - lütfen buraya ve bu bağlantılı özetin içine gönderinfont-sizeheighttrtd
henry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.