দ্রষ্টব্য: যদিও এটি স্বীকৃত উত্তর, নীচের উত্তরটি আরও সঠিক এবং আপনার যদি একটি পটভূমি চিত্র ব্যবহার করার বিকল্প থাকে তবে বর্তমানে সমস্ত ব্রাউজারগুলিতে সমর্থিত।
না, কেবল উভয় দিকেই এটি করার কোনও সিএসএস নেই। আপনি যোগ করতে পারে
.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>