HTML構造の次の部分があります(簡単にするために終了タグは省略され、インデントはネストされたタグを表します):
...
- <div class="main-content-wrapper">
- <div class="item-image-wrapper">
- <img class="item-image fit">
- <div class="item-text">
- <h2 id="itemTitle">
- <p id="itemContent">
次のCSSで
.itemdetailpage section[role=main] article .main-content-wrapper {
display: -ms-grid;
-ms-grid-rows: auto auto;
width: 100%;
height: 100%;
}
.itemdetailpage section[role=main] article .item-image-wrapper {
-ms-grid-row: 1;
width: 100%;
height: 100%;
}
.itemdetailpage section[role=main] article .item-image {
margin-top: 0px;
margin-left: 0px;
}
.itemdetailpage section[role=main] article .item-image.fit {
/* Fit image to page size */
max-width: 100%;
max-height: 100%;
}
.itemdetailpage section[role=main] article .item-text {
-ms-grid-row: 2;
margin-right: 5px;
}
目標は、IMG がメイン コンテンツの許容範囲を超えないようにすること (および幅が広がらないこと) です。つまり、メイン コンテンツ スペースよりも大きい場合は収まり、小さい場合は元のサイズのままになります。テキストは画像の下に流れるだけでなく、スクロールせずに見える範囲の下にも表示できますが、問題ありません。これは、JS コードなし、CSS のみで発生するはずです。
商品テキストが画像より狭い場合は大丈夫です。画像ラッパーは画像よりも数ピクセル高くなっています。理由はわかりませんが、見た目は問題ありません。
ここで見られる問題は、同時に、画像が使用可能な高さよりも高く、アイテムのテキストが画像よりも幅が広い場合です (特にアイテムのタイトル)。この場合、イメージ ラッパーはコンテナーよりも高くなり、イメージに従います。たとえば.main-content-wrapper
、900px の (正しい) 高さを受け取りますが、高さは 1024px で、item-image-wrapper
画像は高さ 1024px (自然な高さ) です。
この 100% DIV の高さが何度も出てきたことを知っており、答えを探しましたが、このケースに適した答えを見つけることができませんでした。
編集:
このSitePoint リファレンスを見つけました。「パーセンテージ値は ... の高さを参照する」という段落です。このルールについて何か知っている人はいますか?