这是我到目前为止所拥有的。
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
<br><br><br><br><br>
CSS
div {
position:fixed;
top:10px;
left:10px;
width:200px;
height:400px;
background-color:red;
}
JS
$(document).ready(function() {
var height = $("div").height();
$(document).scroll(function() {
var lastScrollTop = 0;
$(window).scroll(function(event) {
var st = $(this).scrollTop();
if(st > lastScrollTop) {
height = height - 1;
$("div").css({
'height': height
});
} else {
height = height + 1;
$("div").css({
'height': height
});
}
lastScrollTop = st;
});
});
});
这是一个代码笔。 https://codepen.io/anon/pen/PBaVvB .
不知道问题出在哪里。逻辑看起来很扎实!
但有时它的高度下降速度比增加速度快得多,反之亦然。有人可以帮忙吗?
最佳答案
使用 onscroll、onmousemove 等事件对于平滑移动来说可能有点冒险,因为它们仅在事件触发时触发。这些具有挑战性,因为有时它们发射得很快,有时发射得很慢,但之后它们就不会继续了。
div {
position:fixed;
top:10px;
left:10px;
width:200px;
height:400px;
background-color:red;
}
和
$(document).ready(function() {
var lastScrollTop = 0;
var height=oheight = $("div").height();
$(document).scroll(function() {
height=$(this).scrollTop()/($(document).height()-$(window).height())*oheight;
$("div").css({
'height': height
});
});
});
关于javascript - 如何在向下滚动时平滑地降低 div 的高度并在向上滚动时以相同的速率增加它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51685602/