webForumDet fria alternativet

Begränsa bilds storlek

HTML & CSS

6 svar · 435 visningar · startad av syrolis

Medlem sedan feb. 2003107 inlägg
Frågan#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?

Medlem sedan aug. 20039 340 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)" />
Medlem sedan dec. 20042 245 inlägg
#3

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

img { max-width:200px; height:auto; }
Medlem 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 :-)

Medlem sedan aug. 20039 340 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?

Medlem sedan juni 200032 967 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

Medlem 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; }
266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)