Dada cualquier imagen arbitraria, quiero recortar un cuadrado desde el centro de la imagen y mostrarlo dentro de un cuadrado determinado.
Esta pregunta es similar a esta: CSS muestra una imagen redimensionada y recortada , pero no sé el tamaño de la imagen, así que no puedo usar los márgenes establecidos.
Respuestas:
Una solución es usar una imagen de fondo centrada dentro de un elemento dimensionado a las dimensiones recortadas.
Ejemplo básico
Ejemplo con
img
etiquetaEsta versión conserva la
img
etiqueta para que no perdamos la capacidad de arrastrar o hacer clic derecho para guardar la imagen. Gracias a Parker Bennett por el truco de la opacidad.object-fit
/ /-position
Ver navegadores compatibles .
La especificación de Imágenes CSS3 define las propiedades
object-fit
yobject-position
que juntas permiten un mayor control sobre la escala y la posición del contenido de la imagen de unimg
elemento. Con estos, será posible lograr el efecto deseado:fuente
background-size: cover;
para hacer que la imagen se reduzca o llene el div de manera apropiada mientras mantiene la relación de aspecto original.img
los atributos de lasalt
hormigastitle
se perderán para su SEO.object-fit: cover;
directamente en la etiqueta img que se siente un poco más semántica.Estaba buscando una solución CSS pura usando
img
etiquetas (no la imagen de fondo).Encontré esta forma brillante de lograr el objetivo en miniaturas de recorte con css :
Es similar a la respuesta de @Nathan Redblur, pero también permite imágenes de retratos.
Funciona como un encanto para mí. Lo único que necesita saber sobre la imagen es si es vertical u horizontal para establecer la
.portrait
clase, por lo que tuve que usar un poco de Javascript para esta parte.fuente
Pruebe esto: establezca las dimensiones de recorte de su imagen y use esta línea en su CSS:
fuente
Ejemplo con
img
etiqueta pero sinbackground-image
Esta solución retiene la
img
etiqueta para que no perdamos la capacidad de arrastrar o hacer clic con el botón derecho para guardar la imagen, pero sinbackground-image
simplemente centrar y recortar con CSS.Mantenga la relación de aspecto bien, excepto en imágenes muy altas. (verifique el enlace)
(ver en acción)
Margen
CSS
fuente
Creé una directiva angularjs usando las respuestas de @ Russ y @ Alex
Podría ser interesante en 2014 y más allá: P
html
js
enlace de violín
fuente
Prueba esto:
Tenga en cuenta que
width
yheight
sólo funcionará si su elemento DOM tiene la disposición (elemento de un bloque de muestra, como undiv
o unaimg
). Si no lo es (un lapso, por ejemplo), agréguelodisplay: block;
a las reglas CSS. Si no tiene acceso a los archivos CSS, suelte los estilos en línea en el elemento.fuente
Hay otra forma de recortar la imagen centrada:
Lo único que necesitará es agregar la clase "vertical" a las imágenes verticales, puede hacerlo con este código:
Nota: "! Important" se usa para anular posibles atributos de ancho y alto en la etiqueta img.
fuente