Proyecto ejemplo para adaptar diferente tipo de imagen a un determinado tipo de canvas. Es bastante útil para no romper el diseño cuando un usuario sube imagenes mediante un formulario y no podemos controlarlo.
//Código basico necesario para el funcionamiento
ul {
width: 100%;
padding: 0px;
margin: 0px;
list-style: none;
}
li {
margin: 0px;
padding: 0px;
float: left;
border: 10px solid #fff;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
}
li a {
margin: 0px;
padding: 0px;
display: block;
width: 100%;
}
img {
display: block; //Esto es necesario para que la imagen cubra todo
}
/**
*
* Ratio 16x9
* El 56.25% lo obtenemos dividiendo 9 entre 16
* Es curioso que la altura es 0 sin embargo el padding es 56.25%... ahí esta el truco del almendruco
*/
#ratio16x9 li a {
position: relative;
height: 0px;
padding-top: 56.25%;
}
#ratio16x9 img {
width: 100%;
position: absolute;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
}
/**
*
* Ratio 4x3
* El 75% lo obtenemos dividiendo 3 entre 4
* En el ratio de 16x9 tienes mas explicaciones del código
*/
#ratio4x3 li {
background-color: #000;
}
#ratio4x3 li a {
position: relative;
height: 0px;
padding-top: 75%;
}
#ratio4x3 img {
max-width: 100%;
max-height: 100%;
margin: auto;
position: absolute;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
}
Asi mismo hay un captcha encima...
/**
*
* Ratio 5x7
* El 140% lo obtenemos dividiendo 7 entre 5
* En el ratio de 5x7tienes mas explicaciones del código
*/
#ratio5x7 li {
background-color: #000;
}
#ratio5x7 li a {
position: relative;
height: 0px;
padding-top: 140%;
}
#ratio5x7 a:hover img, #ratio5x7 a:focus img {
-webkit-transform: scale(1.3);
transform: scale(1.3);
}
#ratio5x7 img {
max-width: 100%;
max-height: 100%;
margin: auto;
position: absolute;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
-webkit-transition: all 2s ease-out;
transition: all 2s ease-out;
}
Imagen centrada verticalmente dentro de un DIV y que se recorte por los lados con el CSS. Desgraciadamente no he conseguido hacer lo mismo que se centre horizontal y verticalmente
#cartel li a {
position: relative;
height: 0px;
padding-top: 140%;
}
#cartel img {
width: 100%;
position: absolute;
margin: auto;
top: 0px;
left: -50%;
right: -50%;
}