Sé que es imposible modificar realmente una imagen con CSS, por eso pongo recortar entre comillas.
Lo que me gustaría hacer es tomar imágenes rectangulares y usar CSS para que parezcan cuadradas sin distorsionar la imagen.
Básicamente me gustaría convertir esto:
Dentro de esto:
background-position
o con el antiguo contenedor contenedor con unaoverflow:hidden
imagen con posicionamiento relativo.Respuestas:
Asumiendo que no tienen que estar en las etiquetas IMG ...
HTML:
CSS:
EDITAR: si el div necesita vincularse en algún lugar, simplemente ajuste HTML y Estilos de la siguiente manera:
HTML:
CSS:
Tenga en cuenta que esto también podría modificarse para que responda, por ejemplo,% de anchuras y alturas, etc.
fuente
height: 460px; width: 100%;
y funciona deUna solución CSS pura sin envoltorio
div
u otro código inútil:fuente
overflow:hidden
).Por ejemplo:
fuente
Usando background-size: cover - http://codepen.io/anon/pen/RNyKzB
CSS:
Margen:
fuente
En realidad, me encontré con este mismo problema recientemente y terminé con un enfoque ligeramente diferente (no pude usar imágenes de fondo). Sin embargo, requiere un poco de jQuery para determinar la orientación de las imágenes (sin embargo, estoy seguro de que podría usar JS simple).
Escribí una publicación de blog al respecto si está interesado en más explicaciones, pero el código es bastante simple:
HTML:
CSS:
jQuery:
fuente
$(this).load(function(){...
dentro de cada bucle, por lo que jQuery espera un poco hasta que la imagen se carga y obtiene dimensiones de imagen reales.Si la imagen está en un contenedor con un ancho de respuesta :
HTML
CSS
fuente
Tuve un problema similar y no pude "comprometerme" con las imágenes de fondo. Se me ocurrió esto.
¡Espero que esto ayude!
Ejemplo: https://jsfiddle.net/cfbuwxmr/1/
fuente
Usar CSS: desbordamiento:
fuente
Utilice un div con dimensiones cuadradas con la imagen dentro con la clase .testimg:
o un div cuadrado con un fondo de la imagen.
Aquí hay algunos ejemplos: http://jsfiddle.net/QqCLC/1/
ACTUALIZADO PARA LOS CENTROS DE IMAGEN
fuente
object-fit: cover
Hará exactamente lo que necesita.Pero podría no funcionar en IE / Edge. Siga como se muestra a continuación para solucionarlo solo con CSS para que funcione en todos los navegadores .
El enfoque que tomé fue colocar la imagen dentro del contenedor con absoluta y luego colocarla justo en el centro usando la combinación:
Una vez que está en el centro, le doy a la imagen,
Esto hace que la imagen obtenga el efecto de Object-fit: cover.
Aquí hay una demostración de la lógica anterior.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Esta lógica funciona en todos los navegadores.
Imagen original
Recortada verticalmente
Recortada horizontalmente
fuente