サイズ変更イベントは、ユーザーがウィンドウのサイズを変更するたびに発生します。何かを変更したい場合は、そのイベントのハンドラーから行う必要があります。そうしないと、値が更新されません。ただし、一般に、posval1
サイズ変更イベントハンドラーよりも高いスコープに変数がある場合は、他の場所からもアクセスできますが、前述したように、イベントハンドラーを使用しない限り、コードの他の部分は再度実行されません。
スコープの例:
var posval1;
$(window).on('resize', function() {
posval1 = height * (680 / 697);
});
// somewhere else
console.log(posval1);
ただし、ウィンドウのサイズがまだ変更されていないため、の値posval1
は実行が到達した時点で未定義である可能性があります。console.log()
できることは、CSSの更新を別の関数にアウトソーシングし、イベントハンドラーから、および開始時に1回呼び出すことです。
var windowHeight, pos, posval1; // etc
var updateBg = function () {
if($firstBG.hasClass("inview")){
$firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});
}
};
updateBg(); // once
$(window).on('resize', function () {
// calculate posval1
updateBg(); // every time on resize
});