午後ずっとこれに苦しんでいたので、助けを求めようと思いました...
基本的に、私は次の構造を持っています:
<div id="gallery">
<div class="product">
<img ... />
<div class="caption">
<p>some text</p>
</div>
</div>
<div class="product">
<img ... />
<div class="caption">
<p>some text</p>
</div>
</div>
</div>
一言で言えば、私は次のことを達成したいと考えています。
- 外側のコンテナー (div#gallery) は、ブラウザー ウィンドウ (高さ: 100%;) に合わせてスケーリングされます。
- 画像は外側のコンテナ div#gallery (高さ: 100%; 幅: 自動;) に対して相対的に拡大縮小されるため、レスポンシブになります。
- 各内部コンテナー (div.product) の幅は、その中に含まれる画像をしっかりと囲みます。
- キャプション (div.caption) は、div.product に対して「絶対」に配置されます (透明な背景でオーバーレイされますが、それは重要ではありません)。
最初の試み: 次の CSS を単純に記述できます。
div#gallery {position: relative; height: 100%; ...}
img {height: 100%; width: auto;}
div.caption {position: absolute; width: 100%; ...}
そうすれば、div.product は「静的」になり、画像は div#gallery に対して相対的に配置されます。残念ながら、div.caption が機能するには、div.product が「相対的」である必要があります。そう...
div#gallery {position: relative; height: 100%; ...}
div.product {position: relative;}
img {height: 100%; width: auto;}
div.caption {position: absolute; width: 100%; ...}
うーん、div.caption は機能するようになりましたが、img の高さは div.product に相対的になり、スケーリングされません。それでは、追加しましょう...
div#gallery {position: relative; height: 100%; ...}
div.product {position: relative; height: 100%; width: auto;}
img {height: 100%; width: auto;}
div.caption {position: absolute; width: 100%; ...}
これで本当にうまくいくはずですよね!? よくほとんど。まだ奇妙な点が 1 つあります。ブラウザーのサイズを変更すると、div.product の高さは当然のようにスケーリングされますが、幅は含まれる画像の元の幅に固定されたままです。
そして、これは私が立ち往生しているところです。何か案は?
事前にどうもありがとうございました!
編集: 2 つの提案に続いて、状況を示すjsFiddleがあります: http://jsfiddle.net/marccee/vx5DC/2/