0

次の状況:

var height = $(window).height();
$(window).resize(function() {
var getfactor1 = 680 / 697
var posval1 = height*getfactor1
});

そして別の機能で私は以下を持っています:

if($firstBG.hasClass("inview")){
$firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
    }

ユーザーがブラウザウィンドウを拡大縮小するたびに、window.resize()関数のposval1の値をfirstBG.cssに取得するにはどうすればよいですか。

ありがとうございました!!

4

5 に答える 5

1

または、関数を介して渡すこともできます。

var height = $(window).height();
 $(window).resize(function() {
 var getfactor1 = 680 / 697
 var posval1 = height*getfactor1

 myFunction(posval1);

});

 function myFunction(posval1){
  if($firstBG.hasClass("inview")){
   $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
  }
 }
于 2013-02-17T19:31:07.807 に答える
1

または、もっと簡単に、ウィンドウのサイズ変更関数の外で posval1 を宣言してみませんか?

var height = $(window).height(),
    posval1;

$(window).resize(function() {
   var getfactor1 = 680 / 697;
   posval1 = height*getfactor1;
});

if($firstBG.hasClass("inview")){
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
}
于 2013-02-17T19:35:27.027 に答える
0

サイズ変更イベントは、ユーザーがウィンドウのサイズを変更するたびに発生します。何かを変更したい場合は、そのイベントのハンドラーから行う必要があります。そうしないと、値が更新されません。ただし、一般に、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
});
于 2013-02-17T19:39:28.510 に答える
0

$firstBG.css() を window.resize() に入れないのはなぜですか?

于 2013-02-17T19:24:32.977 に答える
0
function newPos(x, windowHeight, pos, adjuster, inertia){
    return x + "% " + (-((windowHeight + pos) - adjuster) * inertia)  + "px";
}



function Move(){ 
    var pos = $window.scrollTop(); 


    if($firstBG.hasClass("inview")){
         var getfactor1 = 680/697;
        var posval1 = height*getfactor1;
        console.log(posval1);
        $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)});   
    }



    if($secondBG.hasClass("inview")){   
        var getfactor2 = 1255/697;
        var posval2 = height*getfactor2;

....... 等々

于 2013-02-17T19:49:43.133 に答える