मूल उत्तर:
यदि आप CSS3 के विकल्प के लिए तैयार हैं, तो आप css3 अनुवाद संपत्ति का उपयोग कर सकते हैं। जो भी बड़ा है, उसके आधार पर आकार बदलें। यदि आपकी ऊंचाई बड़ी है और चौड़ाई कंटेनर से छोटी है, तो चौड़ाई 100% तक हो जाएगी और दोनों तरफ से ऊँचाई छाँट दी जाएगी। वही बड़ी चौड़ाई के लिए भी जाता है।
आपकी आवश्यकता, HTML:
<div class="img-wrap">
<img src="http://lorempixel.com/300/160/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/300/200/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/200/300/nature/" />
</div>
और सीएसएस:
.img-wrap {
width: 200px;
height: 150px;
position: relative;
display: inline-block;
overflow: hidden;
margin: 0;
}
div > img {
display: block;
position: absolute;
top: 50%;
left: 50%;
min-height: 100%;
min-width: 100%;
transform: translate(-50%, -50%);
}
देखा! कार्य: http://jsfiddle.net/shekhardesigner/aYrhG/
व्याख्या
DIV को relative
स्थिति पर सेट किया गया है । इसका मतलब यह है कि सभी बच्चे तत्व शुरुआती निर्देशांक (मूल) प्राप्त करेंगे, जहां से यह DIV शुरू होता है।
छवि को एक ब्लॉक तत्व के रूप में सेट किया गया है, min-width/height
दोनों को 100% सेट करने का मतलब है कि इसके आकार का कोई फर्क नहीं पड़ता छवि का आकार कम से कम 100% है। min
क्या चाबी है। यदि मिनट की ऊंचाई से, छवि की ऊंचाई माता-पिता की ऊंचाई से अधिक है, तो कोई समस्या नहीं है। यह तब लगेगा जब न्यूनतम चौड़ाई और 100% माता-पिता होने के लिए न्यूनतम ऊंचाई निर्धारित करने का प्रयास करें। दोनों इसके विपरीत जाते हैं। यह सुनिश्चित करता है कि div के आसपास कोई अंतराल नहीं है लेकिन छवि हमेशा थोड़ी बड़ी होती है और इसके द्वारा छंटनी हो जाती हैoverflow:hidden;
अब image
, यह और के absolute
साथ एक स्थिति पर सेट है । इसका मतलब है कि छवि को ऊपर से 50% धक्का दें और सुनिश्चित करें कि मूल DIV से लिया गया है। पैरेंट से लेफ्ट / टॉप यूनिट को मापा जाता है।left:50%
top:50%
जादू का पल:
transform: translate(-50%, -50%);
अब, translate
CSS3 की transform
संपत्ति का यह कार्य एक प्रश्न में एक तत्व को स्थानांतरित / पुन: उत्पन्न करता है। यह संपत्ति लागू तत्व से संबंधित है इसलिए मान (x, y) या (-50%, -50%) का अर्थ है छवि को नकारात्मक छवि के 50% द्वारा छोड़ दिया गया और छवि आकार के 50% से नकारात्मक शीर्ष पर जाना ।
उदाहरण के लिए। यदि छवि का आकार 200px × 150px था, transform:translate(-50%, -50%)
तो अनुवाद (-100px, -75px) की गणना की जाएगी। % इकाई तब मदद करती है जब हमारे पास विभिन्न आकार की छवि होती है।
यह छवि और मूल DIV के केंद्रक का पता लगाने और उनसे मिलान करने के लिए केवल एक मुश्किल तरीका है।
समझाने के लिए बहुत समय लगने के लिए क्षमा याचना!
अधिक पढ़ने के लिए संसाधन:
background-size: cover;
?