2014-07-09 72 views
0

我試圖讓一個變量有一個設置的顏色,直到頁面上的某個滾動距離已經達到,一旦它達到那個點我希望變量不再是那個顏色並恢復到正常設置。一旦我向後滾動頁面,我不希望顏色返回。我首先想到的是JavaScript do while循環,但我不確定這是否是最好的方式,甚至不知道如何在jQuery中做到這一點。如何在jquery中寫一個do while while循環

到目前爲止,這是我

if($('body').hasClass('page-template-homepage-php')){ 
    var oneShot = jQuery(window).scrollTop() 
    var opacity = jQuery(window).scrollTop()/100; 
    if(opacity > 1){ opacity = 1; } 
    //do{ 
    // opacity = 1;} while(
    //  oneShot < 201); 
    $('.background-wrapper').css('background-color', 'rgba(0, 0, 0, ' + opacity +')'); 
    } 

我最初的嘗試是

for(oneShot < 200; opacity = 1){ 
    if(oneShot = 200){ 
     break; 
     } 
    } 

其次

do{ 
    opacity = 1;} while(
     oneShot < 201); 

兩個使用JavaScript,而不是jQuery的明顯

個想法?

澄清:目前,當頁面加載時,問題標題爲純黑色。一旦滾動一個像素,上面貼出的代碼會使標題不透明,然後當滾動繼續向下時,會淡出爲黑色。預期的效果是加載頁面,使頁眉黑色,向下滾動超過100px,而頁眉保持黑色。一旦傳遞100px,當滾動備份不透明淡入生效。 **前

+4

的Java = JavaScript中,javasript == jQuery的。也不要寫無限循環,他們會阻止用戶界面。雖然也許很苛刻,但在瀏覽器設置中,您的方法完全錯誤。閱讀有關事件/事件偵聽器的信息。 – Yoshi

+0

我只是一個網絡用戶愛好者。我來這裏是因爲我知道我不知道。感謝Yoshi – user3819397

+0

的評論請看https://api.jquery.com/scroll/(甚至有演示)。但是,我個人建議在使用任何庫之前學習JavaScript(儘管這只是一個意見)。 – Yoshi

回答

1

有幾件事情我得到了真正的問題:

  1. 正如在評論中的Java 有人說是不是的JavaScript
  2. 和jQuery 庫中書面javascript
  3. 在javascript中,寫一個無限循環來等待某個條件成爲真實(UI方式)永遠不是一個好主意(UI方式)

這就是說,這裏是你如何處理你的問題很簡單的例子:

// attach a listener function to the window.scroll event: 
$(window).on('scroll', function scrollListener(evt) { 
    // each time the event gets triggered, get the scrollTop-value 
    var scrollTopValue = $(window).scrollTop(); 

    // if it is above/below (don't use equal!) a certain value: 
    if (scrollTopValue > 500) { 
    // handle that condition: 
    $('#test').addClass('foo'); 

    // remove the listener: 
    $(window).off('scroll', scrollListener); 
    } 
}); 

演示:http://jsbin.com/sobewute/2/

+1

幾乎聲稱代碼無法正常工作,但我忘記了我的屏幕高度爲'1900px' oops,建議'calc(100%+ 600px)'爲高度 – EaterOfCode

+0

http://jsbin.com/sobewute/2:D – EaterOfCode

+1

@EaterOfCode您說得對,我會將您的更新添加爲演示;) – Yoshi