OK, questo è un po 'un boccone e molto super-specifico. Farò del mio meglio per spiegare!Ridimensiona l'immagine mantenendo le proporzioni, quindi centra verticalmente e orizzontalmente all'interno dell'altezza e della larghezza del fluido DIV
L'obiettivo è mantenere le proporzioni durante il ridimensionamento di un'immagine e mantenerlo verticalmente e orizzontalmente centrato all'interno di un DIV definito solo da percentuali. L'immagine deve mantenersi ottimale, quindi se è richiesta la larghezza massima, viene utilizzata e viceversa.
Usa Firefox versione 33 (o un paio di versioni precedenti) per visualizzare questo js violino vederlo lavorare correttamente:
http://jsfiddle.net/3vr9v2fL/1/
HTML:
<div id="imageviewer" >
<div class="dummy"></div>
<div class="img-container centerer" id="imagevieweroriginal">
<img class="centered" src="http://chrisnuzzaco.com/couch/uploads/image/gallery/smiling_woman_wearing_drivers_cap.jpg" alt="Doctor Concentrating on Work"></img>
</div>
</div>
</div>
CSS :
#imagewrapper{
position:absolute;
width:69%;
height:100%;
top:0px;
bottom:0px;
background-color:gray;
}
#imageviewer{
position:relative;
width:100%;
height:100%;
}
.responsive-container {
position: relative;
width: 100%;
border: 1px solid black;
}
.dummy {
padding-top: 100%; /* forces 1:1 aspect ratio */
}
.img-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.centerer {
text-align:center; /* Align center inline elements */
font: 0/0 a; /* Hide the characters like spaces */
}
.centerer:before {
content: ' ';
display: inline-block;
vertical-align: middle;
height: 100%;
}
.centered {
vertical-align: middle;
display: inline-block;
max-height: 100%;
max-width: 100%;
}
Il problema:
Originariamente ho trovato il mio codice qui su StackOverflow e ha fatto un semplice mod-max altezza/larghezza aggiungendo alla classe .centered. Al momento, questo ha funzionato in tutti i principali browser. L'unica eccezione è l'Opera.
Vertically align an image inside a div with responsive height
C'è un grosso problema però: l'ultima versione di Chrome (versione 38.0.2125.111) non funziona più con questo codice e miei utenti preferiscono Chrome per altri browser con un ampio margine.
Qualche idea su come risolvere questo? È un bug con Chrome? Sono aperto a suggerimenti javascript per farlo funzionare di nuovo.
Ho usato la stessa soluzione. Ma su un grande schermo, l'immagine non prende l'intera larghezza/altezza del contenitore. Sarebbe bello se potessi rivedere la tua risposta. – Aamu