Quiero mostrar una colección de miniaturas de imágenes en una grilla. Las imágenes vendrán en una variedad de tamaños, pero me gustaría restringir las miniaturas a un tamaño particular (digamos 200px
ancho y 150px
alto).Miniaturas de imagen de CSS puro
Lo que me gustaría encontrar algunas reglas de marcado HTML y CSS mágico que
- Permitir que las imágenes que se incluirán en
<img>
elementos normales - Asegúrese de que las miniaturas encajan en su caja de 200x150 píxeles , conservan sus proporciones y se centran en cualquier dimensión que desborden.
- no requiere JavaScript o conocimiento específico de las dimensiones reales de cada imagen
No estoy seguro de si esto es posible. Puedo hacer una (mala) aproximación de lo que quiera con el siguiente marcado:
<div class="thumb">
<img src="360x450.jpeg">
</div>
y CSS:
.thumb {
width: 200px;
height: 150px;
overflow: hidden;
}
.thumb img {
min-width: 200px;
min-height: 150px;
width: 200px;
}
rompe este intento en una variedad de maneras:
Las imágenes que están en orientación vertical se dimensionarán correctamente, pero se desbordarán por la parte inferior del contenedor, lo que producirá un recorte verticalmente descentrado.
Las imágenes que son anchas y cortas se distorsionarán en la dimensión horizontal debido a las reglas codificadas
width
ymin-height
.Pero sin ese código fijo
width
, las imágenes que son más grandes que la altura y el ancho mínimos no se redimensionarán en absoluto.
Si es del todo útil, He puesto un ejemplo que (esperemos) ilustran lo que estoy tratando de hacer, aquí:
Sé que puedo resolver este problema omitiendo por completo el elemento <img>
y en su lugar, tirando de las miniaturas como una imagen de fondo centrada en el cont elemento principal, pero, si es posible, me gustaría mantener los elementos <img>
en la página.
¡Gracias por cualquier ayuda o sugerencias que pueda proporcionar!
Editar: supongo que debería señalar que una solución ideal funcionará en IE 6 + y los navegadores modernos, pero cualquier solución que funciona en IE 9+ y otros navegadores modernos (WebKit reciente, Gecko, etc.) ser felizmente aceptado
Con las reglas que ha especificado, no creo que esto sea posible. Necesitará javascript para consultar el tamaño de la imagen cargada para realizar cálculos, o explotará la relación de aspecto el 50% del tiempo. De hecho, hago esto con un servicio PHP de almacenamiento en caché ... que aunque técnicamente no rompe sus reglas, probablemente vaya en contra de su espíritu. :) –
Sí, eso es a lo que le tenía miedo. Pensé que lo haría de todos modos, por las dudas. –
¿No puede simplemente usar miniaturas generadas? – Midas