CSS max-width og max-height IE problemer

Tags:    css css3 javascript php

Hej Udvikleren,

Jeg har nogle billeder som skal vises på en hejmmeside...
Brugerne kan uploade billederne i nogenlunde den størrelse de ønsker, og jeg ønsker så at billederne bliver vist indenfor en max værdi på højden og en max værdi på bredden, den længste side skal således scales ned, og den anden skal bare følge med automatisk så proportionerne i billedet ikke ændres.
jeg har noget kode der virker nu, i Safari og Chrome, men ikke i ældre versioner af Firefox samt IE. Firefox er givetvis ligegyldigt, men langt størstedelen af brugerne anvender IE, så det skal jeg have til at virke...

Jeg har fundet den nederste kodelinje som også gør at højden bliver scalet rigtigt i IE men hvis jeg indsætter en linje mere med bredden, så fucker det op og den begynder at presse de høje billeder...???

Koden jeg bruger nu er simple CSS og ser således ud:

Fold kodeboks ind/udCSS kode 


På forhånd tak, håber der er nogle der kan hjælpe derude...



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Drop de der expressions med det samme. Det er ikke anbefalelsesværdigt.

max/min-height/width er ikke det du leder efter. Den lader dig ikke croppe billedet.

Du skal finde en javascript løsning - det her er uden for CSS området. Alternativt resizing serverside.



For at få alle billeder til at passe ind i din ramme med 850x600 px størrelse - hvad er det så vi skal?

Vi skal bruge en ratio - et forhold mellem bredde og højde. Det giver os en udgangspunkts ratio på 1,416667 (width / height).

Hvis et billedes ratio er højere end det, så ved vi at billedet er "lavere" i forhold til bredden - i forhold til vores originale ratio (altså rammens ratio). Derfor skal vi resize det billede så det passer til højden, og bagefter croppe bredden.

Og vice versa med et billede med lavere ratio.

Det gør du fint i dit første javascript eksempel.

Næste skridt er at finde ud af hvor meget større billedet er på den led der er for stort. Hvis vi fx har et billede på 450x300, så er vores ratio 1,5 - højere end vores udgangspunkt, og derfor er billedet altså for bredt. Hvis vi resizer 300 til 600, (gange to) så bliver bredden 900. 900-850 = 50 i overskud.

Overskuddet divideret med 2 sættes som negativ venstre margin på billedet. Og billedet sættes i en container, som har overflow: hidden. Derved for svinder den del der er forstort og dit billede bliver centreret - så det kun er det yderste af kanterne der forsvinder...



Indlæg senest redigeret d. 30.08.2012 08:06 af Bruger #17015
Nu er jeg via nettet nået frem til følgende kode:

Fold kodeboks ind/udCSS kode 


Men... Så kommer problemet hvis nogen fx. uploader et billeder der er næsten kvadratisk, så presses billedet på en underlig måde... Nogen der kan gennemskue hvordan det kan være?

Nu har jeg så fundet ud af at det er hvis bredden og højden kommer for tæt på hinanden, så virker det åbentbart ikke....???
Jeg har fx. et billede der er 1200x1200 det bliver presset på en mærkelig måde...
Jeg har også et billede der er 935x1200 det ser også mærkeligt ud...

Nogen der kan hjælpe...?

PFT



Indlæg senest redigeret d. 29.08.2012 22:17 af Bruger #16627
Ok, Gustav,

Hvad foreslår du jeg gør? Opretter en ny tråd under javascript??


Ok nu har jeg prøvet dette:

Fold kodeboks ind/udJScript kode 


hvor $image er mit billede. Det virker sådan set fint i alle browsere, den holder bare ikke proportionerne på billedet den strækker/presser bare så alle billederne passer nøjagtig ind i (width: 850px;
height: 600px;) ???



Jeg har også fundet den her, men den kan jeg heller ikke få til at virke....

Fold kodeboks ind/udJScript kode 



Men her kan jeg ikke få det smeltet sammen med min linje som indsætter billedet:

Fold kodeboks ind/udPHP kode 



Hej igen Gustav, jeg tror du misforstår hvad det er jeg vil... Jeg vil ikke croppe billedet. Jeg vil reseize den længste side af billedet så den passer ind i rammen og så skal den anden side af billedet automatisk blive mindre også, men billedet skal sit originale aspect ratio. Der må altså ikke croppes/beskæres noget af billedet væk.



Indlæg senest redigeret d. 30.08.2012 12:58 af Bruger #16627
t