2017-08-26 60 views
0

首先,我很抱歉,您可能會遇到有關反向滾動的問題。我知道那裏有很多答案,但是經過許多小時的研究和嘗試,我仍然無法實現這個信息我自己的網站。應用反向滾動後的無限滾動

正如你可以在標題中看到的,應用反向滾動後,我可以無限滾動我的網站,這留下了我不想要的結果。下面是一個例子給你我的問題好好看看:

$(document).ready(function() { 
 
    $(window).scroll(function(){ 
 
    $('.right').css('transform', 'translate3d(0,' + $(this).scrollTop()*2 + 'px, 0)'); 
 
    }).scroll(); 
 
});
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
html,body{ 
 
    height:100%; 
 
} 
 
.outside { 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100%; 
 
    margin: 0 auto; 
 
} 
 
.left { 
 
    top: calc(100% - 48px); 
 
    position: absolute; 
 
    left: 0px; 
 
    width: calc(50% - 16px); 
 
} 
 
.right{ 
 
    bottom: calc(100% - 48px); 
 
    position: absolute; 
 
    right: 0px; 
 
    width: calc(50% - 16px); 
 
} 
 
.shot { 
 
    float: left; 
 
    width: 100%; 
 
    height: 200px; 
 
    background-color: #000; 
 
} 
 
.shot_gap { 
 
    float: left; 
 
    width: 100%; 
 
    height: 48px; 
 
} 
 
.release { 
 
    float: left; 
 
    width: 100%; 
 
    height: calc(100vh - 48px); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="outside"> 
 
    <div class="left"> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="release"></div> 
 
    </div> 
 
    <div class="right"> 
 
    <div class="release"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    </div> 
 
</div>

Oryginaly .shot類將不會設置height - 我會拋出一些圖片此DIV - 相同數量和尺寸圖片爲.left.right div。

無論如何,看着這個例子,元素在到達類似位置後應該停止。爲了強制它,我已經包括.release類。不幸的是,這不是在這個例子中的情況 - 它的工作原理,但從HTML刪除.right類,所以我想這裏的問題是JavaScript?

我試圖搞砸這個解決方案: Reverse Scrolling但我沒能實現這個到我的項目。

我不指望任何人解決我的問題。如果有人能指出我正確的方向,那將是很好的。例如,讓我知道什麼是錯誤的,因爲我仍然不確定它是否在.right類中的bottom: calc(100% - 48px)行,或者它只是javascript。

回答

0

好吧,我想我做到了。它的工作原理,但我並不滿意我是如何實現這一目標的。經過研究,我發現父母必須設置爲position: fixed,因爲如果沒有這個,div元素在彼此相反的方向上移動,使得我的頁面在滾動時無限期地長 - 至少這是我的理解。不幸的是,我無法將.outside課程的position修好,因爲那樣我就失去了滾動網站的能力。所以使這項工作的唯一可能的方法是在.outside的頂部創建新的包裝,並將位置設置爲fixed

編輯:有可能只有一個位置fixed包裝。它要求您獲得.left級別的總高度並將其應用於.body。編輯

這一次我用了一點不同的js代碼的

var totalHeight = $(".left").css("height"); 
$("body").css("height", totalHeight); 

結束 - 這對我幫助很大:Reverse Scrolling

這是新版本:

$(window).on('scroll',function(){ 
 
    $(".right").css('bottom',$(window).scrollTop()*-1); 
 
});
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
body{ 
 
    height:100%; 
 
    width: 100%; 
 
} 
 
.outsideL { 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.outsideR { 
 
    position: fixed; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.left { 
 
    top: 0; 
 
    position: absolute; 
 
    left: 48px; 
 
    width: calc(50% - 64px); 
 
} 
 
.right{ 
 
    bottom: 0px; 
 
    position: absolute; 
 
    right: 48px; 
 
    width: calc(50% - 64px); 
 
} 
 
.shot { 
 
    float: left; 
 
    width: 100%; 
 
    height: 400px; 
 
    background-color: #000; 
 
} 
 
.shot_gap { 
 
    float: left; 
 
    width: 100%; 
 
    height: 48px; 
 
} 
 
.release { 
 
    float: left; 
 
    width: 100%; 
 
    height: calc(100vh - 48px); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="outsideR"> 
 
    <div class="right"> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="release"></div> 
 
    </div> 
 
</div> 
 
\t 
 
<div class="outsideL"> 
 
    <div class="left"> 
 
    <div class="release"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="shot_gap"></div> 
 
    <div class="shot"></div> 
 
    <div class="release"></div> 
 
    </div> 
 
</div>