jQuery Preloader

hamst0r

PC-Selbstbauer(in)
Hallo,
ich habe bei der automatischen Größenberechnung in meinem jQuery Preloader ein Problem.
Das Element soll anhand der Fenstergröße skaliert werden. Wenn das Verhältnis zwischen Bildbreite und Fensterbreite größer ist als das der Höhen, soll entsprechend nur die Breite verändert werden, sodass das Bild nicht verzerrt wird.

Code:
    resize = (($(this).width()/$(window).width()) > ($(this).height()/$(window).height())) ? 1 : 2;
        
    if(($(this).width() > ($(window).width()*0.9)) && (resize = 1))
        $(this).width($(window).width()*0.9);
       
    if(($(this).height() > ($(window).height()*0.9)) && (resize = 2))
        $(this).height($(window).height()*0.9);

Wenn das Fenster höher ist als breit, funktioniert alles einwandfrei. Wenn das Fenster jedoch breiter ist als hoch, werden auch die 3/4. Zeile ausgeführt und das Bild wird in der Breite verändert obwohl resize = 2 ist. Kommentier ich die 3/4. Zeile aus, funktioniert es wie es sollte.

Gruß hamst0r
 
hmm. ich würds vllt so versuchen *grübel*

- wieviel prozent müsste man das bild in einer richtung stauchen, damits passt?
- würde man das bild in der anderen richtung genauso stauchen...
- würde das bild dann reinpassen oder nicht?
- wenn ja, schrumpfe um den ermittelten faktor in beiden richtungen
- wenn nicht, schrumpfe um den faktor, den man mit der anderen richtung erhält

->
Code:
ratio = this.width / width;
if((this.height / ratio) <= height) {
    this.width /= ratio;
    this.height /= ratio;
} else {
    ratio = this.height / height;
    this.width /= ratio;
    this.height /= ratio;
}
 
Vielen Dank, aber theoretisch muss ja nur in eine Richtung gestaucht werden.
Wenn nur ein Höhe-Attribut gegeben ist, staucht der Browser die Breite proportional dazu.

Also sollte meins eigentlich funktionieren. Das Problem liegt ja nur darin, dass die 3/4. Zeile ausgeführt wird obwohl resize = 2 ist und die Bedingung resize == 1 ist.

Beim Schreiben ist mir aber gerade der Fehler aufgefallen. Ich habe die Bedingung resize = 1 anstatt resize == 1. Zu viel Delphi in der Schule :P
Damit hat sich alles erledigt, trotzdem Danke.

Gruß hamst0r
 
Zurück