2016-04-15 30 views
5

100 * 300px div içinde 240 * 240px görüntü var (demo değerleri, gerçek değerler değişiyor ve bilinmiyor). Görüntüyü div içinde tamamen görünür yapmak ve ayrıca en boy oranını korumak için object-fit: contain kullanıyorum. Sorun, object-fit'un görüntünün genişliğini değiştirmemesidir, bu da garip bir "dolgu" ile sonuçlanır (yani). Neden nesne sığdırma genişliğini veya yüksekliğini etkilemiyor?

enter image description here

nasıl görüntü yerine orijinal genişliğini alma, gerektiği gibi sadece kadar genişliğini sürmesine sebep olabilir? object-fit özellik normal width ile birlikte çalışır 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

"Genişliği değiştirmiyor" derken ne demek istiyorsun? Genişliği en boy oranında korurken, görüntüyü 100 piksele düşürdü. Dolgu, her tarafta tam 70 pikseldir, çünkü 100x100'e yeniden boyutlandırıldıktan sonra 140px (70px * 2) kaldı. – theblindprophet

+0

@theblindprophet "img" nin aldığı toplam genişlik, görünen görüntüden daha büyüktür. Yapmak istediğim şey, 'img' elemanının asıl resmin genişliği (240px) yerine gerçek görüntü (bu durumda 100 piksel genişlik) kadar genişlik almasıdır. – alexandernst

+0

Ahh, bu yüzden sola kayıyordu ve (örneğin) "div" in geri kalanında başka öğeler için yer olabilirdi? – theblindprophet

cevap

-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

Bu çok fazla "Hayır" Nereden başlayacağımı bilmiyorum:/ – alexandernst

+0

Size verdiğim kodu anlamadığınızı mı yoksa bu calismiyor?? – mlegg

+0

Çalışmıyor ve sorunu gösteren sabit yüksekliği kaldırdınız. – alexandernst

1

, height, max-width a: Deneme

ve max-height. Örnek:

.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>

Aslında, bu çok bile object-fit olmadan çalışıyor, bu jsFiddle bakın.

İlgili konular