我有一個包含幾個100%身高的孩子的div。在滾動時,我總是想要一個孩子的身高達到100%。不幸的是,我無法弄清楚如何防止一次滾動多個步驟。我試過event.preventDefault()
,也使用超時,但沒有工作。滾動100%步驟裏面div
Check out the fiddle看到我到目前爲止 - 以及問題看起來像什麼。
$container = $('#container');
var doScroll = true;
var top = 0;
$container.on("scroll", function(event){
event.preventDefault();
if (doScroll) {
doScroll = false;
top += $container.height();
console.log("scroll event fired");
$container.animate({scrollTop: top}, '700', 'swing', function() {
doScroll = true;
});
}
});
#container {
height: 500px;
width: 300px;
overflow-y: auto;
overflow-x: hidden;
}
.child {
height: 100%;
width: 100%;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
<div class="child red">Child 1</div>
<div class="child blue">Child 2</div>
<div class="child red">Child 3</div>
<div class="child blue">Child 4</div>
<div class="child red">Child 5</div>
</div>
看起來滾動事件在動畫完成後再次被調用。如果添加一個超時setTimeout(function(){doScroll = true},100);'那麼它「起作用」。它仍然只是滾動,說實話,必須有一個更好的方式來做到這一點。 – MinusFour