नोट: भले ही यह स्वीकृत उत्तर है, नीचे दिया गया उत्तर अधिक सटीक है और वर्तमान में सभी ब्राउज़रों में समर्थित है यदि आपके पास पृष्ठभूमि छवि का उपयोग करने का विकल्प है।
नहीं, दोनों दिशाओं में ऐसा करने का कोई CSS केवल तरीका नहीं है। आप जोड़ सकते हैं
.fillwidth {
min-width: 100%;
height: auto;
}
एक तत्व के लिए हमेशा इसकी 100% चौड़ाई होती है और स्वचालित रूप से पहलू अनुपात, या व्युत्क्रम की ऊंचाई को मापता है:
.fillheight {
min-height: 100%;
width: auto;
}
हमेशा अधिकतम ऊंचाई और सापेक्ष चौड़ाई के पैमाने पर। दोनों को करने के लिए, आपको यह निर्धारित करना होगा कि पहलू अनुपात कंटेनर से अधिक या कम है, और सीएसएस ऐसा नहीं कर सकता।
कारण यह है कि सीएसएस को पता नहीं है कि पेज कैसा दिखता है। यह पहले से ही नियम निर्धारित करता है, लेकिन इसके बाद ही यह होता है कि तत्वों का प्रतिपादन हो जाता है और आपको पता चल जाता है कि आप किन आकारों और अनुपातों से निपट रहे हैं। इसका पता लगाने का एकमात्र तरीका जावास्क्रिप्ट है।
यद्यपि आप एक जेएस समाधान की तलाश नहीं कर रहे हैं, मैं किसी को भी जोड़ दूँगा यदि किसी को इसकी आवश्यकता हो सकती है। जावास्क्रिप्ट के साथ इसे संभालने का सबसे आसान तरीका अनुपात में अंतर के आधार पर एक वर्ग जोड़ना है। यदि बॉक्स की चौड़ाई-से-ऊंचाई का अनुपात छवि से अधिक है, तो वर्ग "भरण" जोड़ें, अन्यथा वर्ग "फ़िलहाइट" जोड़ें।
$('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>