javascript - 如何在向下滚动时平滑地降低 div 的高度并在向上滚动时以相同的速率增加它?

标签 javascript jquery scroll scrollbar

这是我到目前为止所拥有的。

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/

相关文章:

javascript - 我该如何处理这样的物体

javascript - 对 jQuery 数据表中的数字进行排序

javascript - 通过滚动使固定工具提示消失

jQuery 水平滚动隐藏,可能只有 css?

javascript - jQuery 顺序淡入动画经历滞后和摆动

javascript - 通过 CSS 和/或 jQuery 展开动画

javascript - 自动测试网站的 IE7 javascript 错误?

javascript - jQuery-ui 可排序占位符在 Firefox 中不起作用 :

html - 使用CSS平滑滚动

javascript - 从 d3.js + 数据操作中的数据绘制线条时出现问题