2009-12-22 35 views
9

Cómo establecer la máxima altura o anchura para:

$ img_attributes = 'height = 100 width = 100'. 'alt = "'. $ product ['product_name']. '"';

+0

¿Estás hablando de PHP o HTML? En HTML puede establecer solo la altura y no mencionar el ancho. Si está en PHP necesita una función como AlbertEins – MindStalker

Respuesta

16

Bueno, están las propiedades CSS max-height y max-width, ¿no? Funcionan en todos los principales navegadores excepto en IE 6 y en IE 7.

+0

Hola Pekka, todavía no lo he probado, pero ¿puede funcionar? $ img_attributes = 'max-height = 100 max-width = 100'. 'alt = "'. $ product ['product_name']. '"'; – Chris

+1

No, necesitas agregar un 'estilo':' style = 'altura-max: 100px; max-width: 100px '' –

+0

Para que esto funcione, no debe establecer un ancho o alto en la etiqueta img. – Staysee

4

Debe consultar esta respuesta para obtener información general: Proportional image resize.

Si desea cambiar el tamaño de una imagen sin utilizar el lado del servidor, le sugiero que utilice el Javascript. Aquí hay un tutorial.

En resumen tiene una función de JavaScript que devolverá la nueva anchura y altura:

function scaleSize(maxW, maxH, currW, currH){ 
    var ratio = currH/currW; 
    if(currW >= maxW){ 
     currW = maxW; 
     currH = currW * ratio; 
    } else >if(currH >= maxH){ 
     currH = maxH; 
     currW = currH/ratio; 
    } 
    return [currW, currH]; 
} 

Con esta función se puede ajustar el ancho de la imagen y la altura:

img.width = newW; 
img.height = newH; 

Pero, la mejor forma sería hacerlo en el lado del servidor. Esto evitará tener un efecto extraño en el lado del cliente.

2

El siguiente estilo hará que todas las imágenes que usan la clase css "MaxSized" tengan una altura máxima de 100 px y un ancho máximo de 100 px. Si una imagen es más pequeña, no se alargará.

<style> 
IMG.MaxSized 
{ 
max-width: 100px; 
max-height: 100px; 
} 
</style> 

Según lo mencionado por Pekka, usted tiene que tener una DTD XHTML 1.0 estricto para que esto funcione en versiones modernas de IE, pero personalmente creo que este es el enfoque adecuado.

+0

problema es si la imagen es más grande tanto en ancho como en alto, pero no es cuadrada. –

+0

¿Entonces obtendrás una especie de bucle? – Chris

+1

Eso no importa. Si desea limitar la altura o el ancho, puede con los estilos max-height y max-width. Si la imagen es más grande verticalmente, estará limitada a la altura máxima especificada y adaptada a escala. Lo mismo aplica para el ancho. La escala no cambia –

0

Como dice la respuesta superior, puede usar las propiedades CSS max-height o max-width. Pero estas propiedades no se comportan de la misma manera. Para mantener la proporción de la imagen, debe configurar el alto y el ancho al 100% y luego establecer max-width. Si configura max-height, la proporción no se conserva.

Así:

<img src="image.png" style="height: 100%; width: 100%; max-width: 400px" alt=" "/> 

preserva la relación, pero

<img src="image.png" style="height: 100%; width: 100%; max-height: 400px" alt=" "/> 

no. Esto es porque (hasta donde yo entendí) HTML primero establecerá el ancho y luego la altura. Por lo tanto, en el segundo caso, el ancho se establece en 100%, pero la altura es limitada, lo que puede provocar la distorsión de la imagen. En el primer caso, el ancho se establece con un límite máximo y la altura se ajusta en consecuencia, preservando así las dimensiones de la imagen.

Cuestiones relacionadas