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
imgetiquetaEsta versión conserva la
imgetiqueta 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/ /-positionVer navegadores compatibles .
La especificación de Imágenes CSS3 define las propiedades
object-fityobject-positionque juntas permiten un mayor control sobre la escala y la posición del contenido de la imagen de unimgelemento. 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.imglos atributos de lasalthormigastitlese 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
imgetiquetas (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
.portraitclase, 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
imgetiqueta pero sinbackground-imageEsta solución retiene la
imgetiqueta para que no perdamos la capacidad de arrastrar o hacer clic con el botón derecho para guardar la imagen, pero sinbackground-imagesimplemente 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
widthyheightsólo funcionará si su elemento DOM tiene la disposición (elemento de un bloque de muestra, como undivo 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