2016-04-15 7 views
5

100 * 300px div内に240 * 240pxの画像があります(デモ値、実際の値は異なり、不明です)。私はobject-fit: containを使って画像をdiv内で完全に見えるようにし、アスペクト比も保持します。問題は、object-fitが画像の幅を変更していないことです。その結果、奇妙な「パディング」が発生します。オブジェクトフィットが幅や高さに影響するのはなぜですか?

enter image description here

どのように私は必要に応じて、画像ではなく、元の幅を取るの、唯一の同じくらいの幅を取ることができますか? object-fitプロパティは、通常widthと連携http://codepen.io/alexandernst/pen/ONvqzN

.wrapper { 
 
    height: 100px; 
 
    width: 300px; 
 
    border: 1px solid black; 
 
} 
 
.flex { 
 
    display: flex; 
 
} 
 
img { 
 
    object-fit: contain; 
 
}
<div class="flex wrapper"> 
 
    <img src="https://unsplash.it/240/240" /> 
 
</div>

+0

「幅を変更していませんか?幅をアスペクト比の範囲内に保ちながら、画像を100ピクセルの高さに縮小しました。 100x100にリサイズした後、140px(70px * 2)が残っているため、パディングは各側で正確に70pxです。 – theblindprophet

+0

@blindprophet私は、 'img'がとる総幅が可視イメージ以上であることを意味します。私がしたいのは、元の画像の幅(240px)の代わりに 'img'要素を実際の画像(この場合は100px幅)と同じ幅にすることです。 – alexandernst

+0

ああ、それは左にスライドし、(例えば)あなたは 'div'の残りの部分に他の要素のためのスペースを持つことができましたか? – theblindprophet

答えて

-1

.wrapper { 
 
    height: auto; 
 
    width: 100%; 
 
    border: 1px solid black; 
 
    background-image: url(https://unsplash.it/240/240); 
 
    background-size: contain; 
 
    background-repeat: no-repeat; 
 
    background-position: center; 
 
} 
 

 
.flex { 
 
    display: flex; 
 
} 
 

 
img { 
 
    object-fit: contain; 
 
}
<div class="flex wrapper"> 
 
    <img src="https://unsplash.it/240/240" /> 
 
</div>

+0

これは非常に「いいえ」です。私はどこから始めるべきかわかりません:/ – alexandernst

+0

あなたは私があなたに与えたコードを理解していないか、それともそれは働いていない?? – mlegg

+0

これは機能しません。問題を示す固定高さを削除しました。 – alexandernst

1

heightmax-width:デモ

nd max-height。例:

.wrapper { 
 
    height: 100px; 
 
    width: 300px; 
 
    border: 1px solid black; 
 
} 
 
.flex { 
 
    display: flex; 
 
} 
 
img { 
 
    object-fit: contain; 
 
    height: 100%; 
 
    width: auto; 
 
}
<div class="flex wrapper"> 
 
    <img src="https://unsplash.it/240/240" /> 
 
</div>

実際には、それはあまりにも、object-fitせずに正常に動作し、このjsFiddleを参照してください。