Se non conoscere le dimensioni delle immagini, ma aver caricato le immagini accanto alle dimensioni del contenitore (forse le immagini più grandi o più piccoli), questo post può essere utile. Qualcosa che sta lavorando per me è il codice successivo:
<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>
E nel file css si hanno le seguenti regole:
a.linkPic{
position:relative;
display: block;
width: 200px; height:180px; overflow:hidden;
}
a.linkPic img{
position:absolute;
}
Si può notare si dispone di un tag immagine all'interno del a.linkPic , quindi per prima cosa devi impostarlo come "posizione: relativo" per contenere l'elemento "img" assoluto. Il trucco per centrare l'immagine senza problemi è un piccolo codice jQuery. Seguire i commenti per capire cosa sta succedendo (alcune linee sono state prese dalla carica Vladimir Maryasov in questa pagina):
$("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
});
Dopo di ciò, tutte le foto all'interno di contenitori a.linkPic sarà posizionato perfettamente centrato . Spero che questo post possa essere utile per qualcuno!
fonte
2016-11-15 00:33:44
Nota a margine: se si tratta di un PNG che si sta tentando di centrare, assicurarsi che non sia trasparente altrimenti si potrebbero incontrare problemi con IE6/etc. - a meno che, naturalmente, non si utilizzi un plugin jQuery o qualcosa per risolvere il problema della trasparenza. –
scusate, probabilmente non ho formulato correttamente la mia domanda. L'immagine verrebbe caricata in un tag img. Ho aggiornato la domanda. Ma questo è utile, grazie! –
@Viatropos: in tal caso, ti consiglio di utilizzare la soluzione crossbrowser pubblicata da edtsech – Wolph