2016-12-12 13 views
2

私はデザイナーと一緒にメールをデザインしています。このメールでGifをヒーローイメージとして実装したいと考えています。しかしモバイルでは、デスクトップとは別のGifを表示したい。ほぼすべてのモバイルクライアントがヘッダーにCSSをサポートしているので、コード内にデスクトップイメージを挿入してから、スタイルとしてモバイルイメージを挿入しました。これは私のコードです: CSS:モバイルで画像を表示していないのに画像を表示していますか?

<style> 
    @media only screen and (max-device-width: 470px) { 
    span[id=mobile] { 
     display:block; 
     background-image: url(mobile.gif) !important; 
     background-repeat: no-repeat !important; 
     background-position: center !important; 
     width: 320px !important; 
     height: 290px !important; 
    } 
    img[id=desktop] {display: none !important;} 
    } 
</style> 

と私のHTML:

<span id="mobile"> 
    <img id="desktop" src="desktop.gif" alt=""> 
</span> 

すべてが正常に動作し、私が持っている唯一の問題は、それぞれのGIFのサイズは220キロバイト程度であるということです。 1つしかロードされていない場合は、モバイル用には問題ないと思います。私は今、デスクトップバージョンを表示していないにもかかわらず、まだ完全にロードされていると思う。任意の回避策があるので、1つだけが読み込まれますか?

別に大きすぎるイメージファイルから
+1

モバイルの場合、220mbのgifは_not_ fineです。大きな画像は携帯電話のほとんどのアプリよりもはるかに大きく、私のインターネット速度は12mbpsでトッピングしているので、GIFがダウンロードされる前にあなたの電子メールにあるものを読んだり、削除したりすることができます。 – Gerrit0

+0

私は220kbを意味しました、申し訳ありません! – Niqql

+0

セレクタ(span [id = mobile])は最新のGmail Appではサポートされていません - スタイルを完全に取り除かないもの。それを変更してAndroidのGmailで仕事をしてもらうために#mobileに変更してください。 –

答えて

2

さまざまな電子メールクライアントがこれを別々に処理しますが、HTML本文にイメージを隠して、メディアクエリで選択的に表示しようとしましたか?イメージがデフォルトでdisplay:none; -edの場合、HTMLを読み取っている電子メールクライアントはすぐにダウンロードしない可能性があります。

CSS

<style> 
    @media only screen and (min-device-width: 470px) { 
     img[id=desktop] { 
      display: block !important; 
     } 
    } 
</style> 

<!--[if !mso]> 
<style> 
    @media only screen and (max-device-width: 470px) { 
     span[id=mobile] { 
      display:block; 
      background-image: url(mobile.gif) !important; 
      background-repeat: no-repeat !important; 
      background-position: center !important; 
      width: 320px !important; 
      height: 290px !important; 
     } 
     img[id=desktop] { 
      display: none !important; 
     } 
    } 
</style> 
<![endif]--> 

HTML

<span id="mobile"> 
    <img id="desktop" src="desktop.gif" alt="" style="display: none;"> 
</span> 

ここでも、すべての電子メールクライアントはこれを行うかどうかわかりません。


あなたが焦点を当てるものをクライアントわから

ないが、別のオプション価値はテストがsrcsetありますか?

<img srcset="small.gif 1x, large.gif 2x" src="small.gif" alt="my gif" border="0"> 

それ以上の範囲をカバーすることはできませんが、iOSメールをカバーする必要があります。

+2

リトマス経由で、このソリューションが大多数の電子メールクライアントで動作することを酸性テストと生存テストで電子メールで確認できます。私が本当に見つけた唯一の例外は、スタイルシートの更新をまだ受け取っていないAndroidネイティブクライアント(1%未満の市場)とAndroid Gmailアプリのいくつかのバージョンでした(非常に小さなマージン)。また、モバイルイメージバージョンの周りに!mso条件を追加して、両方がOutlookの返信と転送に表示されないようにします。しかし、srcsetは広く受け入れられていません。 – Gortonington

+0

@Gortoningtonの素晴らしいアイデアについては、<! - [if!mso]> '、私は私の答えを更新しました! –

+0

Gortoningtonの素晴らしい答えとテストに感謝します!私はこれを実装し、それもテストします。異なるクライアントでメールファイルのサイズを測定するツールがあるかどうか知っていますか? – Niqql

0

(220メガバイト - ?ええと、ええと...)あなたはそれを他の方法でラウンドを行う必要があり、最初のmin-device-width: 471pxなどのメディアクエリー 1に、モバイルとの背景画像を定義するようにデスクトップ向け。そうすれば、デスクトップイメージはモバイルデバイスにロードされません。

+0

私はOutlookのスタイルを頭の中で使用しないため、このようにしました。そしてほとんどのモバイルクライアントはそうします。また、私は間違いのために申し訳ありません、220kbを意味しました。 – Niqql

関連する問題