tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
273
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    aminox aminox ist offline Mitglied
    Registriert seit
    Jul 2010
    Beiträge
    15
    Hallo,

    ich möchte das onResize-Event von JS benutzen, um das Hintergrundbild einer Homepage anzupassen.
    Habe dazu folgendes geschrieben:

    HTML-Code:
    <script type="application/javascript">
    window.onload = function () {
       // initale Breite und Höhe des Browserfensters
       var iWidth = window.innerWidth || 
          (window.document.documentElement.clientWidth || window.document.body.clientWidth);
       var iHeight = window.innerHeight || 
          (window.document.documentElement.clientHeight || window.document.body.clientHeight);
       document.getElementById('backgroundImage').style.width = iWidth + "px" ;
       document.getElementById('backgroundImage').style.left = "50%" ;
       document.getElementById('backgroundImage').style.marginLeft = iWidth / 2 * (-1) + "px";
       
       
       window.onresize = resizeBackground;
    }
    
    function resizeBackground()
    {
          var width = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
          var height = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
    		  document.getElementById('backgroundImage').style.width = width + "px" ;
    		  document.getElementById('backgroundImage').style.left = "50%";
    		  width = width / 2 * (-1);
    		  window.document.getElementById('backgroundImage').style.marginLeft = width + "px";
    		  
    }
    </script>
    Das funktioniert ja soweit auch schön und gut. Nur habe ich jetzt folgende Situation. Wenn die Fensterbreite kleiner wird als die Höhe bzw. die Höhe des Bildes, entsteht unten ein weißraum, weil das Bild dann einfach nicht mehr die Höhe ausfüllt.
    Ich glaube, ich stehe gerade etwas auf dem Schlauch, was die Bedingung betrifft.
    Oder sollte ich generell die Höhe anpassen und einfach nur die Breite propotional ermitteln?
     

  2. #2
    Avatar von StupidBoy
    StupidBoy StupidBoy ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Bremen
    Beiträge
    197
    Ich hatte mal ein Script geschriebn das genau dieses problem löst, ich kanns nur leider nicht mehr finden.

    Letzendlich ist es aber auch eigentlich nicht schwer. Was du prüfen musst sind die Proportionen - des Hintergrunds und des Fensters (oder wonach du dich richtest). Dann musst du abhängig von den Proportionen prüfen, ob du das Bild in der Höhe oder in der Breite skalieren musst.

    Beispiel: Der Hintegrund hat eine geringer Proportion (z.B. 4:3 = 1,333) als das Fenster (z.B. 1,777), dann musst du den Hintergrund in Anhängigkeit der Breite anpassen und entsprechend in der Höhe wenn der Fall entgegensetzt gelagert ist.

    Natürlich wäre dein Hintergrund dann höher bzw. breiter als dein Fenster, entsprechend könntest du noch den Höhen-/Breitenunterschied ermitteln, durch zwei dividieren und den Hintergrund um genau diesen wert nach links oder oben aus dem sichtbaren Bereich verschieben (vorausgesetzt, dass du dich bei der Positionierung am oberen bzw. linken Fensterrand orientierst), um den Hintergrund zu zentrieren.

    Ich hoffe, dass ich keinen Denkfehler gemacht habe, so sollte es aber eigentlich stimmen.
     
    Grüße SB

  3. #3
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    dein Script ändert bei einer Grössenänderung des Fensters auch nur die Breite:
    Code :
    1
    2
    3
    
       document.getElementById('backgroundImage').style.width = iWidth + "px" ;
       document.getElementById('backgroundImage').style.left = "50%" ;
       document.getElementById('backgroundImage').style.marginLeft = iWidth / 2 * (-1) + "px";
    Es fehlt einfach noch die Änderung für die Höhe:
    Code :
    1
    2
    3
    
       document.getElementById('backgroundImage').style.height = iHeight + "px" ;
       document.getElementById('backgroundImage').style.top = "50%" ;
       document.getElementById('backgroundImage').style.marginTop = iHeight / 2 * (-1) + "px";
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  4. #4
    aminox aminox ist offline Mitglied
    Registriert seit
    Jul 2010
    Beiträge
    15
    @StupidBoy
    Jepp, das dürfte von der Theorie so hinkommen

    @Quaese
    Wenn ich die Breite und die Höhe zusammen anpasse, dann kanns aber passieren, dass ich die Hintergrundbilder verzerre... oder?
     

  5. #5
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Ja, das ist richtig, das Hintergrundbild würde verzerrt werden.

    Darf das nicht passieren, ist die Methode von @StupidBoy zu empfehlen.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 12.01.10, 06:38
  2. Hintergrundbild an Bildschirmauflösung anpassen
    Von Nord-Süd-Richtung im Forum CSS
    Antworten: 1
    Letzter Beitrag: 26.06.09, 19:51
  3. Bilder auf Hintergrundbild anpassen?
    Von GFX-Händchen im Forum CSS
    Antworten: 17
    Letzter Beitrag: 25.02.08, 10:17
  4. Hintergrundbild an Bildschirm anpassen
    Von Burnymc im Forum CSS
    Antworten: 4
    Letzter Beitrag: 08.04.05, 07:11
  5. hintergrundbild anpassen
    Von sascha 1974 im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 06.04.05, 17:00