2016-05-05 17 views
1

我試圖創建一個div這將讓只在滾動和類固定股利時滾動的值是210我有下面的代碼:上滾動

$(document).ready(function() { 
    var pageWidth = $(window).width(); 

    if(pageWidth > 700){ 
     var contentLeft = $('#content-left'); 
     var height = 210; 

     $(window).scroll(function() { 
      if ($(window).scrollTop() < height) { 
       contentLeft.attr('class', 'content-left'); 
      } else { 
       contentLeft.attr('class', 'content-left leftContentFixed'); 
      } 
     }); 
    } 
}); 

我嘗試應用此只在桌面上。 因此,如果它位於智能手機或平板電腦上,則不需要使用leftContentFixed類。

如果我嘗試類似:

$(document).ready(function() { 
    var pageWidth = $(window).width(); 

    if(pageWidth > 700){ 
     alert("Bigger than 700"); 
    }else{ 
     alert("Smaller than 700"); 
    } 
}); 

比它的作品完美,但我的代碼它不工作。類leftContentFixed被添加,雖然屏幕小於700.

有什麼建議?

回答

1

您需要檢查resize事件的屏幕大小,並檢查用戶滾動頁面時的值。您可以創建mobile變量並使其true/false取決於屏幕大小,然後在scroll回調檢查其值並選擇正確的類。

$(document).ready(function() { 
 
    var pageWidth = $(window).width(), 
 
    height = 210, 
 
    contentLeft = $('.content-left'), 
 
    mobile = false; 
 

 
    $(window).on('load resize', function() { 
 
    pageWidth = $(this).width(); 
 
    // Save mobile status 
 
    if (pageWidth > 700) { 
 
     mobile = false; 
 
    } else { 
 
     mobile = true 
 
    } 
 
    }) 
 

 
    $(window).on('scroll', function() { 
 
    if ($(window).scrollTop() > height) { 
 
     // Set default class 
 
     var _class = 'content-left leftContentFixed'; 
 
     // If mobile then modify class 
 
     if (mobile) { 
 
     _class = 'content-left'; 
 
     } 
 
     contentLeft.attr('class', _class); 
 
    } else { 
 
     var _class = 'content-left'; 
 
     contentLeft.attr('class', _class); 
 
    } 
 
    }); 
 

 
});
html { 
 
    height: 2000px 
 
} 
 

 
.content-left { 
 
    background: gold; 
 
    width: 50px; 
 
    height: 100px; 
 
} 
 

 
.content-left.leftContentFixed { 
 
    position: fixed; 
 
    top: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="content-left"></div>

+1

也應該考慮CSS媒體查詢本'leftContentFixed'的東西,沒有必要根據視口寬度與Javascript功能來切換...權利,除非它只能依賴於滾動應用狀態.. – Thernys

+0

它不工作。現在,根本不添加leftContentFixed類。 – Boky

+0

@Boky在控制檯中的任何錯誤? – t1m0n