イメージがあります。縦横比を維持しながら、それに応じてサイズを拡大します。その画像の上に、いくつかの小さな画像が配置されます (ナビゲーション リンク)。これらの小さな画像は、メインの画像に合わせて拡大縮小し、常に(相対的に) 同じ場所に配置する必要があります。
アップデート:
問題を説明するために jsfiddle を作成しました: http://jsfiddle.net/v9V5p/
イメージはバート・シンプソン。常に紺色のコンテナの範囲内にある必要があります。水色のナビゲーション リンクがオーバーレイされ、常に Bart の顔を覆う必要があります。
これは WebKit ブラウザーで機能しますが、FF または Opera Bart では大きすぎます。これらのブラウザーのいずれかを使用している場合: Bart は、プレビュー ウィンドウの高さの 75% にすぎない紺色のコンテナーの中央に配置する必要があります。
最初のアイデアはこれでした:
<div class="image-container">
<div class="navigation-link"></div>
<div class="navigation-link"></div>
<div class="navigation-link"></div>
</div>
そしてCSS:
.image-container {
bottom: 0;
width: 100%;
height: whatever px;
background: url(my image) no-repeat bottom center;
background-size: contain;
}
簡単。問題は、またはいずれかimage-container
の画像よりも大きくなる可能性があることです.CSSでそれを見つける方法がわからないため、親divに対してsを一貫して配置/スケーリングする方法がありません.height
width
navigation-link
私の解決策は次のとおりです。
<div class="image-container">
<div class="image-wrapper">
<img class="image" src="my image" />
<div class="navigation-link"></div>
<div class="navigation-link"></div>
<div class="navigation-link"></div>
</div>
</div>
そしてCSS:
.image-container {
bottom: 0;
width: 100%;
height: whatever px;
}
.image-wrapper {
display: inline-block; // shrink-to-fit
}
.image {
max-height: 100%;
max-width: 100%;
}
img
縦横比を維持しながらスケーリングし、その周りimage-wrapper
に収まるように縮小することで、navigation-links
フックするものを提供します。
それは美しく機能します... WebKitブラウザで。
Firefox and Opera set max-height
and max-width
to auto
if the parent element doesn't have height
and width
set. I've been told that's according to W3C specs.
Is there any way I can do what I want in CSS? I don't want to turn to JavaScript for layouting, if I don't have to.