संपादित करें: पिछले तालिका-आधारित छवि स्थिति में इंटरनेट एक्सप्लोरर 11 ( तत्वों max-height
में काम नहीं करता display:table
) के मुद्दे थे । मैंने इसे इनलाइन आधारित स्थिति से बदल दिया है जो न केवल इंटरनेट एक्सप्लोरर 7 और इंटरनेट एक्सप्लोरर 11 दोनों में ठीक काम करता है, बल्कि इसके लिए कम कोड की भी आवश्यकता होती है।
यहाँ मेरा विषय पर ले रहा है। यह केवल तभी काम करेगा जब कंटेनर का निर्दिष्ट आकार हो ( max-width
और max-height
कंटेनरों के साथ ऐसा प्रतीत न हो कि कंक्रीट का आकार नहीं है), लेकिन मैंने सीएसएस सामग्री को इस तरह से लिखा है जिससे इसे पुन: उपयोग किया जा सके ( picture-frame
वर्ग जोड़ें) और px125
आकार वर्ग आपके मौजूदा कंटेनर में)।
सीएसएस में:
.picture-frame
{
vertical-align: top;
display: inline-block;
text-align: center;
}
.picture-frame.px125
{
width: 125px;
height: 125px;
line-height: 125px;
}
.picture-frame img
{
margin-top: -4px; /* Inline images have a slight offset for some reason when positioned using vertical-align */
max-width: 100%;
max-height: 100%;
display: inline-block;
vertical-align: middle;
border: 0; /* Remove border on images enclosed in anchors in Internet Explorer */
}
और HTML में:
<a href="#" class="picture-frame px125">
<img src="http://i.imgur.com/lesa2wS.png"/>
</a>
डेमो
/* Main style */
.picture-frame
{
vertical-align: top;
display: inline-block;
text-align: center;
}
.picture-frame.px32
{
width: 32px;
height: 32px;
line-height: 32px;
}
.picture-frame.px125
{
width: 125px;
height: 125px;
line-height: 125px;
}
.picture-frame img
{
margin-top: -4px; /* Inline images have a slight offset for some reason when positioned using vertical-align */
max-width: 100%;
max-height: 100%;
display: inline-block;
vertical-align: middle;
border: 0; /* Remove border on images enclosed in anchors in Internet Explorer */
}
/* Extras */
.picture-frame
{
padding: 5px;
}
.frame
{
border:1px solid black;
}
<p>32px</p>
<a href="#" class="picture-frame px32 frame">
<img src="http://i.imgur.com/lesa2wS.png"/>
</a>
<a href="#" class="picture-frame px32 frame">
<img src="http://i.imgur.com/kFMJxdZ.png"/>
</a>
<a href="#" class="picture-frame px32 frame">
<img src="http://i.imgur.com/BDabZj0.png"/>
</a>
<p>125px</p>
<a href="#" class="picture-frame px125 frame">
<img src="http://i.imgur.com/lesa2wS.png"/>
</a>
<a href="#" class="picture-frame px125 frame">
<img src="http://i.imgur.com/kFMJxdZ.png"/>
</a>
<a href="#" class="picture-frame px125 frame">
<img src="http://i.imgur.com/BDabZj0.png"/>
</a>
संपादित करें: जावास्क्रिप्ट का उपयोग करके संभावित रूप से और अधिक सुधार (अपकमिंग इमेज):
function fixImage(img)
{
var $this = $(img);
var parent = $this.closest('.picture-frame');
if ($this.width() == parent.width() || $this.height() == parent.height())
return;
if ($this.width() > $this.height())
$this.css('width', parent.width() + 'px');
else
$this.css('height', parent.height() + 'px');
}
$('.picture-frame img:visible').each(function
{
if (this.complete)
fixImage(this);
else
this.onload = function(){ fixImage(this) };
});