レスポンシブでなければならないモバイル電子メール テンプレート (javascript がないことを意味します) を作成しています。
画面が狭くなるにつれて縮小されるいくつかの画像をインラインで配置したい。css table と table-cell を使用してこれを行い、画像を拡大縮小しました。今のところ問題ありません。
ただし、画像は電子メール クライアントによってブロックされることが多いため、画像が読み込まれていないときに画像の「代替テキスト」を表示する、一種の灰色のプレースホルダーを作成するように依頼されました。このプレースホルダーを、含まれている画像と同じサイズにし、幅を狭くして拡大縮小したいと考えています。
次のフィドルでわかるように、私はかなり遠くまで行きました: http://jsfiddle.net/ow7c5uLh/29/
HTML:
<div class="table">
<div class="table-cell">
<div class="placeholder">
<img src="http://lorempixum.com/120/60/" alt="alt text" width="120" height="60" />
</div>
</div>
<div class="table-cell">
<div class="placeholder">
<img src="http://lorempixum.com/120/60/" alt="alt text" width="120" height="60" />
</div>
</div>
<div class="table-cell">
<div class="placeholder">
<img src="http://lorempixum.com/120/60/" alt="alt text" width="120" height="60" />
</div>
</div>
</div>
CSS:
.table {
display: table;
table-layout: fixed;
width: 100%;
}
.table-cell {
display: table-cell;
text-align: center;
padding: 0 5px;
border: 1px dotted black;
}
.placeholder {
max-width: 120px;
max-height: 60px;
margin: auto;
background-color: #505050;
color: #FFFFFF;
}
img {
max-width: 100%;
height: auto;
}
ただし、次の 2 つの問題があります。
- 画面が狭くなり、画像がスケーリングされると、背景色が画像の下から飛び出します。placeholder-div は画像と同じようにスケーリングされますが、その高さは (ブラウザーによって) 画像の高さよりも 5 ピクセル大きくなるように計算されます。その違いはどこから来るのですか?
- 画像がロードされていない場合 (画像の URL を無効にしてフィドルを試してください)、placeholder-div の高さが崩れます。正しい高さを保つにはどうすればよいですか?
参考までに、実際に使用される画像は常に同じサイズであるとは限りませんが、サイズがわかり、縦横比を計算できます。これらの値 (120px など) を、例のように個別の css ファイルではなく、インラインで書き込みます。
助けてくれてありがとう!