Jan-Eric96
New member
Hey liebe Community,
ich bin noch relativ neu unterwegs in den Weiten von Javascript. Deswegen bitte kleinere Denkfehler etc. gleich korrigieren, wenn euch was auffällt.
Mein Problem:
Ich habe ein DIV mit einer Höhe von 400px. Ich möchte darin ein Background-Image vertikal zentrieren was FIXED ist. (Wenn man so eines zentriert, wird es ja normalerweise mittig vom Browser-Fenster platziert. Ich möchte es aber mittig vom DIV haben...). Darum habe ich Javascript benutzt. Das Bild hat außerdem immer eine Breite von genau 100%. Wenn man den Browser also verkleinert, verkleinert sich auch das Hintergrundbild um muss mit dem Script neu zentriert werden. Klappt auch soweit... (Außer bei Firefox, den Fehler habe ich noch nicht gefunden.) Ich würde jetzt aber gerne, dass das Bild schon beim Laden der Seite zentriert wird. Dann wird der Script aber komischerweise nicht ausgeführt...
Hier der Script:
ich bin noch relativ neu unterwegs in den Weiten von Javascript. Deswegen bitte kleinere Denkfehler etc. gleich korrigieren, wenn euch was auffällt.
Mein Problem:
Ich habe ein DIV mit einer Höhe von 400px. Ich möchte darin ein Background-Image vertikal zentrieren was FIXED ist. (Wenn man so eines zentriert, wird es ja normalerweise mittig vom Browser-Fenster platziert. Ich möchte es aber mittig vom DIV haben...). Darum habe ich Javascript benutzt. Das Bild hat außerdem immer eine Breite von genau 100%. Wenn man den Browser also verkleinert, verkleinert sich auch das Hintergrundbild um muss mit dem Script neu zentriert werden. Klappt auch soweit... (Außer bei Firefox, den Fehler habe ich noch nicht gefunden.) Ich würde jetzt aber gerne, dass das Bild schon beim Laden der Seite zentriert wird. Dann wird der Script aber komischerweise nicht ausgeführt...
Hier der Script:
Code:
$(document).load(updatewidth);
$(window).resize(updatewidth);
function updatewidth() {
var w = $( window ).width();
var img = new Image;
img.src = $('.div').css('background-image').replace(/url\(|\)$/ig, "");
var bgImgWidth = img.width;
var bgImgHeight = img.height;
var koef = bgImgHeight/bgImgWidth;
var minimumWidth = 400/koef;
var h = w * koef;
h = -h/2 + 200;
var scrolledY = h; //bis hier hin werden nur bisherige Breiten ermittelt und wie das Seitenverhältnis des Bildes ist etc. um es entsprechend zu skalieren.
if (w <= minimumWidth) { //damit keine weißen Ränder sichtbar werden, soll das Bild ab einer minimalen Breite aufhören mit dem Browser zu schrumpfen und feste Werte bekommen
$('.abstand').css('background-size', minimumWidth + 'px auto');
$('.abstand').css('background-position', 'center ' + 0 + 'px');
}
if (w > minimumWidth) { //Das ist der eigentliche Script, der das Background-Image zentriert.
$('.abstand').css('background-size', '100% auto');
$('.abstand').css('background-position', 'left ' + ((scrolledY)) + 'px');
$('.abstand').css('height', '400px');
}
}