Digamos que quiero una manera de mostrar solo el centro de 50x50px de una imagen que tiene 250x250px en HTML. Cómo puedo hacer eso. Además, ¿hay alguna manera de hacer esto para las referencias css: url ()?
Soy consciente del clip en CSS, pero parece que solo funciona cuando se usa con posicionamiento absoluto.
Respuestas:
Una forma de hacerlo es establecer la imagen que desea mostrar como fondo en un contenedor (td, div, span, etc.) y luego ajustar la posición del fondo para obtener el sprite que desea.
fuente
background-size
Como se menciona en la pregunta, existe la
clip
propiedad css, aunque sí requiere que el elemento que se está recortando seaposition: absolute;
(lo cual es una pena):Demostración de JS Fiddle , para experimentación.
Para complementar la respuesta original, algo tardíamente, estoy editando para mostrar el uso de
clip-path
, que ha reemplazado laclip
propiedad ahora en desuso .La
clip-path
propiedad permite una variedad de opciones (más que la originalclip
), de:inset
- formas rectangulares / cuboides, definidas con cuatro valores como 'distancia desde'(top right bottom left)
.circle
-circle(diameter at x-coordinate y-coordinate)
.ellipse
-ellipse(x-axis-length y-axis-length at x-coordinate y-coordinate)
.polygon
- definido por una serie dex
/y
coordenadas en relación con el origen del elemento de la esquina superior izquierda. A medida que el camino se cierra automáticamente el número mínimo realista de puntos para un polígono debe ser de tres, cualquier menos (dos) es una línea o (uno) es un punto:polygon(x-coordinate1 y-coordinate1, x-coordinate2 y-coordinate2, x-coordinate3 y-coordinate3, [etc...])
.url
- Esto puede ser una URL local (usando un selector de id de CSS) o la URL de un archivo externo (usando una ruta de archivo) para identificar un SVG, aunque no he experimentado con ninguno (todavía), así que no puede ofrecer una idea de su beneficio o advertencia.Demostración de JS Fiddle , para experimentación.
Referencias
- nota: en desuso .clip
clip-path
(MDN) .clip-path
(W3C) .fuente
clip
está en desuso . Más recienteclip-path
no requiere posicionamientoOtra alternativa es la siguiente, aunque no es la más limpia, ya que supone que la imagen es el único elemento en un contenedor, como en este caso:
Luego puede usar el contenedor como una máscara con el tamaño deseado y rodear la imagen con un margen negativo para moverla a la posición correcta:
La demostración se puede ver en este JSFiddle .
Solo parece funcionar en IE> 9, y probablemente en todas las versiones significativas de todos los demás navegadores.
fuente