2009-12-22 13 views
9

Come impostare la massima altezza o larghezza per:

$ img_attributes = 'height = 100 width = 100'. 'Alt = "'. $ Prodotto [ 'product_name']. '"';

+0

Stai parlando di PHP o HTML? In HTML è possibile impostare solo l'altezza e non menzionare la larghezza. Se in PHP hai bisogno di una funzione come AlbertEins – MindStalker

risposta

16

Bene, ci sono le proprietà max-height e max-width CSS, non è vero? Funzionano in tutti i principali browser tranne IE 6 e IE 7.

+0

Ciao Pekka, non l'ho ancora testato, ma può funzionare? $ img_attributes = 'max-height = 100 max-width = 100'. 'Alt = "'. $ Prodotto [ 'product_name']. '"'; – Chris

+1

No, devi aggiungere uno 'stile':' style = 'max-height: 100px; max-width: 100px '' –

+0

Affinché ciò funzioni, non è necessario impostare una larghezza o un'altezza sul tag img stesso. – Staysee

4

Si consiglia di consultare questa risposta per informazioni generali: Proportional image resize.

Se si desidera ridimensionare un'immagine senza utilizzare il lato server, suggerisco all'utente Javascript. Ecco un tutorial.

In breve si dispone di una funzione JavaScript che restituisce il nuovo Larghezza e Altezza:

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 questa funzione è possibile impostare la larghezza e l'altezza dell'immagine:

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

Ma, il migliore il modo sarebbe farlo sul lato server. Ciò impedirà di avere un effetto strano sul lato client.

2

Il seguente stile farà sì che tutte le immagini che utilizzano la classe css "MaxSized" abbiano un'altezza massima di 100 px e una larghezza massima di 100 px. Se un'immagine è più piccola, non sarà allungata.

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

Come già detto da Pekka, dovrete avere un XHTML 1.0 DTD Strict in modo che questo lavorare in versioni moderne di IE, ma io personalmente credo che questo è l'approccio adeguato.

+0

è se l'immagine è più grande sia in larghezza che in altezza, ma non quadrata. –

+0

Avrai una specie di loop allora? – Chris

+1

Non importa. Se si desidera limitare l'altezza o la larghezza, è possibile con gli stili max-height e max-width. Se l'immagine è più grande verticalmente, sarà limitata all'altezza massima specificata e adattata in scala. Lo stesso vale per la larghezza. La scala non cambia. –

0

Come la risposta in alto dice, è possibile utilizzare max-height o max-width proprietà CSS. Ma queste proprietà non si comportano allo stesso modo. Per mantenere il rapporto dell'immagine, devi impostare altezza e larghezza al 100%, quindi impostare max-width. Se imposti max-height il rapporto non viene mantenuto.

Quindi:

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

vuol mantenere il rapporto, ma

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

non lo fa. Questo perché (per quanto ho capito) HTML prima imposta la larghezza e poi l'altezza. Quindi nel secondo caso la larghezza è impostata al 100% ma l'altezza è limitata, il che potrebbe causare una distorsione dell'immagine. Nel primo caso, la larghezza viene impostata con un limite massimo e l'altezza viene regolata di conseguenza, preservando quindi le dimensioni dell'immagine.

Problemi correlati