2017-08-14 78 views
1

當你在991以上的屏幕上滾動時,我想要一個div滾動。在屏幕尺寸較小時,我想要修復div。我希望在每次有人加載或調整頁面大小時刷新javascript代碼。Div隨着你在桌面屏幕上滾動,並在移動屏幕上修復

在這裏我的代碼(它不幹...)。

我的問題是,當我調整窗口的大小(桌面畫面 - >手機屏幕 - >桌面畫面...): 1 - 上桌面 - 移動屏幕上的我不能在頁面 2的底部去屏幕我有一個問題,當我滾動頁面

//when the page is load and the window resize detect if it's a smallscreen 
    var smallscreen = true; 
    $(window).on("resize load", function() { 
    if ($(window).width() > 991) { 
     smallscreen = false; 
    } 
    else { 
     smallscreen = true; 
    }; 

    //if it's not a small screen activate the scrolling 
    if (smallscreen == false) { 
     $.fn.followTo = function (pos) { 
     var $this = this, 
      $window = $(window); 

     $window.scroll(function(e){ 
      if ($window.scrollTop() > pos) { 
      $this.css({ 
       position: 'absolute', 
       top: pos 
      }); 
      } 
      else { 
      $this.css({ 
       position: 'fixed', 
       top: 180 
      }); 
      }; 
     }); 
     }; 
     $('#checkout_validation').followTo(400); 
    } 
    else { 
     $.fn.followTo = function (pos) { 
     var $this = this, 
      $window = $(window); 

     $window.on("resize scroll load", function(e){ 
      if ($window.scrollTop() > pos) { 
      $this.css({ 
       position: 'initial', 
       width: '100%', 
       top: 0 
      }); 
      } 
      else { 
      $this.css({ 
       position: 'initial', 
       width: '100%', 
       top: 0 
      }); 
      }; 
     }); 
     }; 
     $('#checkout_validation').followTo(0); 
    }; 
    }); 
+1

您可以刪除smallerscreen的代碼,只需使用CSS將其固定即可。桌面移動'$(window).on(「resize load」''。$ .fn.followTo'函數,同樣移動其他代碼,這會讓你清楚的知道什麼不起作用 – iMatoria

+0

@ iMatoria感謝您的回答,如果我刪除了小屏幕代碼,div會一直滾動,如果我調整窗口大小 – Blueone

+1

這就是你必須使用CSS管理的東西,你可以添加一個類,以防小屏幕和使用CSS。是非常一般的實現移動第一代碼/html的方式 – iMatoria

回答

0

這是我工作的代碼。感謝@iMatoria的乾燥。

//when the page is load and the window resize detect if it's a smallscreen 
var smallscreen = true; 

$.fn.followTo = function(pos) { 
    var $this = this, 
     $window = $(window); 

    $window.on("resize scroll", function(e) { 
     function positionByScreen(positionForBiggerScreen, topOffsetForBiggerScreen) { 
      if (smallscreen == false) { 
       //alert('bigcreen scroll end'); 
       $this.css({ 
        position: positionForBiggerScreen, 
        top: topOffsetForBiggerScreen 
       }); 
      } else { 
       //alert('smallscreen no scroll end '); 
       $this.css({ 
        position: 'inherit', 
        top: 0 
       }); 
      } 
     } 

     if ($window.scrollTop() > pos) { 
      positionByScreen("absolute", pos); 
     } else { 
      positionByScreen("fixed", 180); 
     }; 
    }); 
}; 

$(window).on("resize load", function() { 
    smallscreen = !($(window).width() > 991); 

    //if it's not a small screen activate the scrolling 
    $('#checkout_validation').followTo(smallscreen ? 0 : 400); 

    //var d = document.getElementById("checkout_validation"); 
    //d.className += " otherclass"; 
}); 
+0

@iMatoria我剛剛發現了一個代碼中的問題當我第一次加載頁面時移動的元素參數是(位置:固定; 頂部:180px;),我需要調整大小或滾動以適用正確的參數我試圖添加「加載」5行,但它不工作。 (「調整大小滾動」,功能(e)) – Blueone