2016-06-16 3 views
0

フレックスボックスのスタイリングで応答性のあるライトボックスを作成し、このライトボックスの画像がコンテナに収まりません。 (十分な垂直方向のスペースがあればうまく動作します)。ここでライトボックス内の画像がコンテナの外にぶら下がっています

問題を可視化する画像は、次のとおりです。 HTMLコードザッツenter image description here

<div id="dialog-container"> 
    <div id="dialog"> 
    <div id="dialog-content"> 
     <div class="image-wrapper"> 
     <img src="https://spotwild.org/css/images/dist/header/header-07-1600.jpg"> 
     </div> 
     <div class="thumbs"> 
     Here are the thumbs 
     </div> 
    </div> 
    </div> 
</div> 

CSS: https://jsfiddle.net/ppkzt7m6/1/

* { 
    margin: 0; 
    padding: 0; 
} 

html, body { 
    height: 100%; 
    width: 100%; 
} 

#dialog-container { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    background: black; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
} 

#dialog { 
    max-width: 80%; 
    max-height: 80%; 
    background: white; 
    padding: 50px; 
    box-sizing: border-box; 
    position: relative; 
} 

#dialog-content { 
    display: flex; 
    flex: 1 1 100%; 
    flex-direction: column; 
    box-sizing: border-box; 
    height: 100%; 
    max-height: 100%; 
} 

.image-wrapper { 
    display: flex; 
    flex: 1 1 auto; 
    justify-content: center; 
    align-items: center; 
    min-width: 0; 
    min-height: 0; 
} 

img { 
    min-width: 0; 
    min-height: 0; 
    max-height: 100%; 
    max-width: 100%; 
    display: flex; 
    flex: 0 0 auto; 
} 

.thumbs { 
    background: #eee; 
    padding: 20px; 
    line-height: 25px; 
    box-sizing: border-box; 
} 

そして、ここでは、対応するjsfiddleです

誰かが解決策とその理由を説明していますか?

+0

それはあなたがもしそうなら、私は非常に[ライトボックスバージョン2](http://lokeshdhakar.com/projects/lightbox2/) – Martin

+0

ありませんを使用することをお勧めしますライトボックスバージョン1を使用しているあなたのスクリーンショットから検索します私はライブラリを一切使用していません – friedi

+0

Lightboxはビルドしようとしていることを実行しますが、ホイールを再開発する少しのポイントがあります.... – Martin

答えて

0

は#dialog

#dialog { 
    background: white none repeat scroll 0 0; 
    box-sizing: border-box; 
    height: 100%; 
    max-height: 80%; 
    max-width: 80%; 
    padding: 50px; 
    position: relative; 
} 
+0

私は高さを追加しましたが、イメージはもうサイズ変更されません:https://jsfiddle.net/ppkzt7m6/3/ – friedi

0

、USE THISに高さを追加します。

img { 
    display: block; 
    height: 100%; 
    max-height: 100%; 
    max-width: 100%; 
    min-height: 0; 
    min-width: 0; 
    width: 100%; 
} 
#dialog { 
    background: #ffffff none repeat scroll 0 0; 
    box-sizing: border-box; 
    height: 100%; 
    max-height: 80%; 
    max-width: 80%; 
    padding: 50px; 
    position: relative; 
} 
+0

これは私にとってはうまくいきません:https://jsfiddle.net/ppkzt7m6/2/ – friedi

+0

しかし、私は正確に問題を知っています? – iyyappan

+0

jsfiddleでわかるように、イメージの高さはもはや変わりません。 – friedi

1

重要な部分は、割合の高さが適切に機能するようにする<img>要素のすべての親コンテナにheightを定義することです。

<img>要素でobject-fit: cover;を使用してください。現在のIE11とEdgeはそれをサポートしていないことに注意してください。他のすべての最新のブラウザで正常に動作します。support tablesを参照してください。

jsFiddle

あなたはまた、フレキシボックスなしでそれを行うことができますが、キーは、私はあなたが行う場合は、背景画像を使用することをお勧め

jsFiddle

絶対位置に画像のキャプションを設定することですIEをサポートする必要があります。例:

jsFiddle

<div class="image-wrapper" style="background: url('https://spotwild.org/css/images/dist/header/header-07-1600.jpg') center/cover;"> 
+0

+1あなたの答えをありがとう!それは私が欲しいものではありません。フレックスボックスと可変コンテナサイズでこの作業を行う解決策はありませんか? – friedi

+0

私はそれを上に更新しました。それが役に立ったら教えてください。 – Stickers

+0

編集の後に提案のいずれかが機能しますか? – Stickers

関連する問題