webForumDet fria alternativet

Begränsa bilds storlek

6 svar · 431 visningar · startad av syrolis

syrolisMedlem sedan feb. 2003107 inlägg
#1

Undrar om man kan begränsa en bilds storlek utan att förstora små bilders storlek?

Infogar länkade bilder via databas i en tabell och bilderna är olika stora.
Skulle kunna sätta width på tex 200 men det skulle förstora små bilder så de ser pixlade ut även om det skulle göra susen på bilder som är tex 400 i originalstorlek.

Finns det något alternativ i HTML-koden?
Att små bilder visas i originalstorlek och stora bilder sätts en gräns på 200pixlar i bredd?

Någon som förstår vad jag är ute efter?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Här har jag en väl fungerande lösning liggandes, där du dessutom kan ställa in maxhöjd och maxbredd individuellt.

<script>
var maxwidth = 200;
var maxheight = 200;

function fixImgSize(th){
	var wratio = maxwidth / th.width;
	var hratio = maxheight / th.height;

	if (wratio <1 || hratio <1){	
		if (wratio<hratio){
			th.width *= wratio;
		}else{
			th.height *= hratio;
		}
	}
}

</script>
<img src="centerbg/warp.jpg" onload="fixImgSize(this)" />
zcorpanMedlem sedan dec. 20042 245 inlägg
#3

För Opera och Firefox kan man använda:

img { max-width:200px; height:auto; }
syrolisMedlem sedan feb. 2003107 inlägg
#4

zcorpan: din kod kan jag använda den tillsammans med nitro2k01 kod?
Eller måste allting skrivas om? *förlägen* kan inte så mycket om det här :-)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Här är en kombination, om du absolut vill kombinera metoderna.

<style type="text/css">
img.imgclass { max-width:200px; height:auto; }
</style>
<script>
var maxwidth = 200;
var maxheight = 200;

fixImgSize=null;
if (window.sidebar || window.opera){
  document.write('<style type="text/css"> img.imgclass { max-width:200px; height:auto; }</style>');
  fixImgSize = function(){};
}else{
fixImgSize=function(th){
var wratio = maxwidth / th.width;
var hratio = maxheight / th.height;

if (wratio <1 || hratio <1){
if (wratio<hratio){
th.width *= wratio;
}else{
th.height *= hratio;
}
}
}

}
</script>
<img src="centerbg/warp.jpg" class="imgclass" onload="fixImgSize(this)" />

En kommentar på zcropans lösning, den funkar väl inte för för höga bilder, bara för för breda, eller?

@ndersMedlem sedan juni 200032 969 inlägg
#6

Så här skrev nitro förra gången (till mig):

nitro2k01 skrev:

Detta javascript ändrar bilden lokalt. Det gör att om bilden är för stor kommer den att flimra till precis innan storleken ändras.

Om det är någon som har ett annat förslag som också fungerar i IE (inte bara jag, utan också 90% av våra kunder använder IE på Windows) utan att flimra, så hojta till! :)

Mvh

zcorpanMedlem sedan dec. 20042 245 inlägg
#7

En kommentar på zcropans lösning, den funkar väl inte för för höga bilder, bara för för breda, eller?

Oj, hade missat den detaljen. Trodde det bara skulle gälla för bredden. ;)

img { width:auto; height:auto; max-width:200px; max-height:200px; }

...eller det kanske till och med räcker med:

img { max-width:200px; max-height:200px; }
131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)