CSS समाधान कोई JS और कोई पृष्ठभूमि छवि नहीं:
विधि 1 "मार्जिन ऑटो" (IE8 + - FF नहीं!):
div{
width:150px;
height:100px;
position:relative;
overflow:hidden;
}
div img{
position:absolute;
top:0;
bottom:0;
margin: auto;
width:100%;
}
<p>Original:</p>
<img src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
<p>Wrapped:</p>
<div>
<img src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
</div>
http://jsfiddle.net/5xjr05dt/
विधि 2 "ट्रांसफ़ॉर्म" (IE9 +):
div{
width:150px;
height:100px;
position:relative;
overflow:hidden;
}
div img{
position:absolute;
width:100%;
top: 50%;
-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
<p>Original:</p>
<img src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
<p>Wrapped:</p>
<div>
<img src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
</div>
http://jsfiddle.net/5xjr05dt/1/
विधि 2 का उपयोग किसी निश्चित चौड़ाई / ऊंचाई वाले कंटेनर में एक छवि को केंद्रित करने के लिए किया जा सकता है। दोनों अतिप्रवाह कर सकते हैं - और यदि छवि कंटेनर से छोटी है, तो यह अभी भी केंद्रित होगा।
http://jsfiddle.net/5xjr05dt/3/
विधि 3 "डबल रैपर" (IE8 + - FF नहीं!):
.outer{
width:150px;
height:100px;
margin: 200px auto; /* just for example */
border: 1px solid red; /* just for example */
/* overflow: hidden; */ /* TURN THIS ON */
position: relative;
}
.inner {
border: 1px solid green; /* just for example */
position: absolute;
top: 0;
bottom: 0;
margin: auto;
display: table;
left: 50%;
}
.inner img {
display: block;
border: 1px solid blue; /* just for example */
position: relative;
right: 50%;
opacity: .5; /* just for example */
}
<div class="outer">
<div class="inner">
<img src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
</div>
</div>
http://jsfiddle.net/5xjr05dt/5/
विधि 4 "डबल रैपर और डबल इमेज" (IE8 +):
.outer{
width:150px;
height:100px;
margin: 200px auto; /* just for example */
border: 1px solid red; /* just for example */
/* overflow: hidden; */ /* TURN THIS ON */
position: relative;
}
.inner {
border: 1px solid green; /* just for example */
position: absolute;
top: 50%;
bottom: 0;
display: table;
left: 50%;
}
.inner .real_image {
display: block;
border: 1px solid blue; /* just for example */
position: absolute;
bottom: 50%;
right: 50%;
opacity: .5; /* just for example */
}
.inner .placeholder_image{
opacity: 0.1; /* should be 0 */
}
<div class="outer">
<div class="inner">
<img class="real_image" src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
<img class="placeholder_image" src="http://i.stack.imgur.com/2OrtT.jpg" alt="image"/>
</div>
</div>
http://jsfiddle.net/5xjr05dt/26/
- विधि 1 में थोड़ा बेहतर समर्थन है - आपको छवि की चौड़ाई या ऊंचाई निर्धारित करनी होगी!
- उपसर्ग विधि 2 के साथ भी सभ्य समर्थन है (यानी 9 से ऊपर) - विधि 2 का ओपेरा मिनी पर कोई समर्थन नहीं है!
- विधि 3 दो रैपर का उपयोग करती है - चौड़ाई और ऊँचाई को ओवरफ्लो कर सकती है।
- विधि 4 एक दोहरी छवि का उपयोग करता है (प्लेसहोल्डर के रूप में) यह कुछ अतिरिक्त बैंडविड्थ ओवरहेड देता है, लेकिन इससे भी बेहतर क्रॉसबोवर समर्थन करता है।
विधि 1 और 3 फ़ायरफ़ॉक्स के साथ काम नहीं करते हैं
width
औरheight
तदनुसार समायोजित करना चाहिए