← Back to CSS Course | Chapter 9: Modern CSS Features | Lesson 7 of 25

CSS Object Fit

किसी photo को frame करने की कल्पना करें। अगर frame photo से अलग shape का है, तो या तो आप picture को तब तक stretch करते हैं जब तक वह distorted न दिखे, या आप इसे frame के अंदर साफ़ तरीके से fit करने के लिए crop करते हैं। object-fit browser को exactly बताता है कि एक fixed size box के अंदर बैठी images और videos के लिए उस mismatch को कैसे handle करे। यह content को squashed photo छोड़ने के बजाय stretch, crop, shrink, या letterbox कर सकता है। object-position इसके साथ काम करता है, आपको यह चुनने देते हुए कि cropping होने पर image का कौन-सा हिस्सा visible रहता है, edges trim करने से पहले photo को frame के अंदर slide करने जैसा।
Syntax
css
selector {
  object-fit: fill | contain | cover | none | scale-down;
}

fill Value

fill बिना object-fit वाले replaced elements के लिए default behavior है, यह media को original aspect ratio नज़रअंदाज़ करते हुए box को पूरी तरह भरने के लिए stretch करता है। यह default behavior शायद ही कभी photos के लिए वह होता है जो आप चाहते हैं, क्योंकि distortion आमतौर पर visually jarring होता है।

Note:
  • photographs के लिए fill से बचें, यह faces और straight lines को distort करता है, इसे उन graphics के लिए बचाएँ जो stretching सह सकें।
  • Accepted values:
  • cover — box भरता है और crop करता है, aspect ratio रखता है
  • contain — पूरी तरह अंदर fit होता है, aspect ratio रखता है
  • fill — default, box भरने के लिए stretch होता है, distort हो सकता है
  • none — original size रखता है
  • scale-down — none या contain में से छोटा
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: अगर box का aspect ratio source media के aspect ratio से match नहीं करता तो fill images को warped दिखा सकता है।

उदाहरण: The fill Value

css
<style>
img {
  width: 200px;
  height: 100px;
  object-fit: fill;
}
</style>
<img src="https://placehold.co/400x400" alt="Stretched, ignoring the original aspect ratio">

contain Value

contain media को shrink या grow करता है ताकि पूरी चीज़ अपने aspect ratio को रखते हुए box के अंदर fit हो जाए, छोटे axis पर खाली जगह छोड़ते हुए। यह value तब ideal है जब आपको guarantee करना है कि पूरी image visible है, भले ही इसका मतलब उसके आस-पास visible खाली space हो।

Note:
  • box पर background-color के साथ contain जोड़ें ताकि empty letterbox space raw white दिखाने के बजाय design में blend हो जाए।
  • Accepted values:
  • object-fit: contain — अंदर fit होता है, aspect ratio रखता है
  • object-position: center — letterboxing का default alignment
  • background-color — खाली space में visible
  • width और height — box define करते हैं जिसमें image बैठती है
Warning: contain कभी crop नहीं करता, इसलिए अगर box media से कहीं ज़्यादा wide या tall है, तो बहुत सारी visible खाली जगह दिख सकती है।

उदाहरण: The contain Value

css
<style>
img {
  width: 200px;
  height: 100px;
  object-fit: contain;
  background: #eee;
}
</style>
<img src="https://placehold.co/400x400" alt="Entire image visible, empty space on the shorter axis">

cover Value

cover media को तब तक scale up करता है जब तक यह पूरी तरह box भर न दे, किसी भी overflow को crop करते हुए, यह hero images और avatars के लिए सबसे common choice है। क्योंकि image का कुछ हिस्सा crop हो जाता है, cover तब सबसे अच्छा काम करता है जब subject centered हो या object-position को इसके लिए compensate करने के लिए adjust किया गया हो।

Note:
  • responsive hero banners के लिए cover ideal है क्योंकि यह screen size चाहे जो भी हो हमेशा बिना किसी gaps के space भर देता है।
  • Accepted values:
  • object-fit: cover — box भरता है, aspect ratio रखता है, overflow crop करता है
  • object-position: <position> — तय करता है कि कौन-सा हिस्सा visible रहे
  • width और height — box define करते हैं
  • नोट: img, video और दूसरे replaced elements पर लागू होता है
Warning: cover edges के पास important subject matter को crop कर सकता है, visible focal point रखने के लिए इसे object-position के साथ combine करें।

उदाहरण: The cover Value

css
<style>
img {
  width: 200px;
  height: 100px;
  object-fit: cover;
}
</style>
<img src="https://placehold.co/400x400" alt="Fills the box, cropping any overflow">

none और scale-down Values

none box को पूरी तरह नज़रअंदाज़ करता है और media को उसके natural size पर दिखाता है, संभावित रूप से overflow या gaps छोड़ते हुए, जबकि scale-down none या contain में से जो भी छोटा result दे उसे चुनता है।

Note:
  • scale-down इस्तेमाल करें जब आप चाहते हैं कि बड़ी images fit होने के लिए shrink हों लेकिन छोटी images को stretch up करने के बजाय उनके natural size पर छोड़ दिया जाए।
  • Accepted values:
  • object-fit: none — natural size रखता है, overflow या crop हो सकता है
  • object-fit: scale-down — none और contain में से छोटा
  • object-position — image को box के अंदर align करता है
  • width और height — box define करते हैं
Warning: अगर source box से बड़ा है तो none किसी image को उसके container से overflow कराकर आस-पास के layout में फैला सकता है।

उदाहरण: The none and scale-down Values

css
<style>
.none {
  width: 100px;
  height: 100px;
  object-fit: none;
}
.scale-down {
  width: 100px;
  height: 100px;
  object-fit: scale-down;
}
</style>
<img class="none" src="https://placehold.co/300x300" alt="Natural size, may overflow">
<img class="scale-down" src="https://placehold.co/300x300" alt="Shrunk to fit like contain">

object-position से Focal Point Control करना

object-position तय करता है कि जब object-fit crop करे या खाली जगह छोड़े तो media का कौन-सा हिस्सा anchored और visible रहे, keywords या precise percentage और length values accept करते हुए।

इसे adjust किए बिना, original photo में off-center positioned subject को object-fit: cover पूरी तरह crop कर सकता है।

Note:
  • लोगों की photography करते समय object-position: top इस्तेमाल करें, क्योंकि faces आमतौर पर किसी portrait photo के top के पास होते हैं।
  • Accepted values:
  • object-position: 50% 50% — default, centered
  • object-position: top | bottom | left | right | center — keywords
  • object-position: <length> <length> — offsets
  • object-position: <percentage> <percentage> — relative
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: object-position का कोई visible effect सिर्फ तभी होता है जब इसे उन object-fit values के साथ combine किया जाए जो crop करती हैं या जगह छोड़ती हैं, जैसे cover, contain, या none।

उदाहरण: Controlling the Focal Point With object-position

css
<style>
img {
  width: 200px;
  height: 100px;
  object-fit: cover;
  object-position: top;
}
</style>
<img src="https://placehold.co/400x400" alt="Keeps the top of the photo visible when cropped">
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह भूल जाना कि object-fit को image या video की एक explicit width और height चाहिए, इनके बिना fit होने के लिए कोई box नहीं है।
  2. object-fit: cover इस्तेमाल करना और उम्मीद करना कि पूरी image visible रहेगी, cover design से overflowing edges crop करता है।
  3. object-fit को background-size के साथ confuse करना, object-fit सिर्फ img और video जैसे replaced elements पर लागू होता है, background images पर नहीं।
चैप्टर सारांश
  • object-fit control करता है कि किसी image या video को उसके box में fit करने के लिए कैसे resize किया जाए: fill, contain, cover, none, या scale-down।
  • cover box को पूरी तरह भरने के लिए crop करता है, जबकि contain बिना crop किए पूरे media को fit होने के लिए shrink करता है।
  • object-position चुनता है कि cropping होने पर media का कौन-सा हिस्सा visible रहे, background-position जैसे काम करते हुए।
ब्राउज़र सपोर्ट

object-fit और object-position हर modern browser द्वारा supported हैं, पुराने Edge versions में एक known limitation है जो video elements पर object-fit नज़रअंदाज़ करते थे।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.