Not: Kabul edilen cevap bu olsa da, aşağıdaki cevap daha doğrudur ve bir arka plan resmi kullanma seçeneğiniz varsa şu anda tüm tarayıcılarda desteklenmektedir.
Hayır, bunu her iki yönde yapmanın tek yolu CSS yoktur. Ekleyebilirsin
.fillwidth {
min-width: 100%;
height: auto;
}
Bir öğenin her zaman% 100 genişliğe sahip olması ve yüksekliği otomatik olarak en boy oranına veya tersine ölçeklendirmesi için :
.fillheight {
min-height: 100%;
width: auto;
}
her zaman maksimum yüksekliğe ve göreceli genişliğe ölçeklemek için. Her ikisini de yapmak için, en boy oranının kapsayıcısından yüksek mi yoksa düşük mü olduğunu belirlemeniz gerekir ve CSS bunu yapamaz.
Bunun nedeni, CSS'nin sayfanın neye benzediğini bilmemesidir. Kuralları önceden belirler, ancak ancak ondan sonra öğeler işlenir ve hangi boyut ve oranlarla uğraştığınızı tam olarak bilirsiniz. Bunu tespit etmenin tek yolu JavaScript kullanmaktır.
Bir JS çözümü aramıyor olmanıza rağmen, birisinin ihtiyaç duyması durumunda yine de ekleyeceğim. Bunu JavaScript ile halletmenin en kolay yolu, oran farkına göre bir sınıf eklemektir. Kutunun genişlik-yükseklik oranı görüntünün oranından daha büyükse, "dolgu genişliği" sınıfını, aksi takdirde "dolgu yüksekliği" sınıfını ekleyin.
$('div').each(function() {
var fillClass = ($(this).height() > $(this).width())
? 'fillheight'
: 'fillwidth';
$(this).find('img').addClass(fillClass);
});
.fillwidth {
width: 100%;
height: auto;
}
.fillheight {
height: 100%;
width: auto;
}
div {
border: 1px solid black;
overflow: hidden;
}
.tower {
width: 100px;
height: 200px;
}
.trailer {
width: 200px;
height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="tower">
<img src="http://placekitten.com/150/150" />
</div>
<div class="trailer">
<img src="http://placekitten.com/150/150" />
</div>