Если вы не знаете размеры изображения, но загрузили изображения рядом с размером контейнера (возможно, изображения большего или меньшего размера), этот пост может быть полезен. Что-то, что работает для меня, это следующий код:
<a class="linkPic" href="#">
<img src="images/img1.jpg" alt=""/>
</a>
<a class="linkPic" href="#">
<img src="images/img2.jpg" alt=""/>
</a>
<a class="linkPic" href="#">
<img src="images/img3.jpg" alt=""/>
</a>
А в файле .css у вас есть следующие правила:
a.linkPic{
position:relative;
display: block;
width: 200px; height:180px; overflow:hidden;
}
a.linkPic img{
position:absolute;
}
Вы можете заметить, что у вас есть тег image внутри a.linkPic, поэтому сначала вы должны установить его как «position :lative» для содержания абсолютного элемента «img». Хитрость для центрирования картинки без проблем - это небольшой код jQuery. Следуйте комментариям, чтобы понять, что происходит (некоторые строки взяты из поста Владимира Марьясова на этой странице) :
$("a.linkPic img").each(function() {
// Get container size
var wrapW = $("a.linkPic").width();
var wrapH = $("a.linkPic").height();
// Get image sizes
var imgW = $(this).width();
var imgH = $(this).height();
// Compare if image is bigger than container
// If image is bigger, we have to adjust positions
// and if dont, we have to center it inside the container
if (imgW > wrapW && imgH > wrapH)
{
// Centrar por medio de cálculos
var moveX = (imgW - wrapW)/2;
var moveY = (imgH - wrapH)/2;
// attach negative and pixel for CSS rule
var hWide = '-' + moveX + 'px';
var hTall = '-' + moveY + 'px';
$(this).addClass("imgCenterInDiv").css({
"margin-left" : hWide,
"margin-top" : hTall
});
} else {
$(this).addClass("imgCenterInDiv").css({
"left" : 0,
"right" : 0,
"top" : 0,
"bottom" : 0,
"margin" : "auto",
});
}//if
});
После этого все изображения внутри контейнеров a.linkPic будут расположены по центру. Надеюсь, этот пост кому-нибудь пригодится!