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

为什么不将 $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 回答
0

每次用户调整窗口大小时都会发生调整大小事件。如果要更改某些内容,则必须从该事件的处理程序中完成,否则值将不会更新。但一般来说,如果你的posval1变量在比调整大小事件处理程序更高的范围内,你也可以从其他地方访问它,但正如我所说,除非在事件处理程序中,否则代码的其他部分将不会再次执行。

范围示例:

var posval1;

$(window).on('resize', function() {
  posval1 = height * (680 / 697);
});

// somewhere else
console.log(posval1);

posval1然而,在执行到达时,的值很可能是未定义的console.log(),因为窗口尚未调整大小。您可以做的只是将 CSS 更新外包给另一个函数,并从事件处理程序中调用它以及在开始时调用一次。

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 回答