当前位置: 首页 > 知识库问答 >
问题:

Javascript DIV滚动运动

慕逸仙
2023-03-14

NIm创建一个动画,在滚动中递增地移动div。我很接近,但我不认为我的代码是最有效的,我不知道如何调整它以添加更多参数。例如,在页面上点击某个高度会将对象向右移动并停止向下移动。下面是我的JS和代码笔可以在;

http://codepen.io/anon/pen/KxHwu-原创

http://codepen.io/anon/pen/DLxqg-左右移动

var lastScrollTop = 0;
var boxPosition = $('#box').position();
var row2Position = $('#row2').position();

var distance = $('#row2').offset().top,
    $window = $(window);

console.log(distance);

$window.scroll(function() {
    if ( $window.scrollTop() >= distance - 400 ) {
      var st = $(window).scrollTop();
      console.log(st);

      $('#box').css({top: 0 + st});

      //CODE NOT WORKING

      if(st >= 270) {
        var boxPos = $('#box').position();
        console.log(boxPos.left);
        $('#box').css({left: boxPos.left + st});
      }

      //
    lastScrollTop = st;

    }
});

我正在寻找框开始像它一样滚动,然后当它点击第2行的一半时向右滚动。

我希望我已经简单地解释了这一点!

谢啦

共有1个答案

郑安晏
2023-03-14

http://codepen.io/anon/pen/tHwlq

下面是一个如何做到这一点的例子;你需要调整数字,使其按计划运行。

var $window = $(window);
var $box = $("#box");

$window.scroll(function() {
    var scrollTop = $window.scrollTop();

    if (scrollTop >= 250 && scrollTop < 400) {
      $box.css({top: -250 + scrollTop});      
    } else if(scrollTop >= 400 && scrollTop < 600) {
      $box.css({left: (50+(scrollTop-400)/2)+"%"})
    }
});

如果你的项目有很多这样的元素,我推荐ScrollMagic(http://janpaepke.github.io/ScrollMagic/)图书馆。

就效率而言,我建议如下:

1)缓存jQuery选择器(注意$box变量)。否则,jQuery将不得不在每个滚动事件上查询DOM。

2) 缓存scrollTop,而不是在事件回调中多次查询它。

3) 虽然lefttop可以工作,但使用transform:translate()属性更有效,尤其是在移动设备上。(https://developer.mozilla.org/en-US/docs/Web/CSS/transform)但是,在大多数移动设备上,滚动事件仅在滚动完成时触发,而不是在页面滚动时触发。

 类似资料:
  • scroll 事件允许对页面或元素滚动作出反应。我们可以在这里做一些有用的事情。 例如: 根据用户在文档中的位置显示/隐藏其他控件或信息。 当用户向下滚动到页面末端时加载更多数据。 这是一个显示当前滚动的小函数: window.addEventListener('scroll', function() { document.getElementById('showScroll').innerH

  • jd.pageScrollTo(OBJECT) 将页面滚动到目标位置。 OBJECT 参数说明: 参数 类型 必填 说明 scrollTop Number 是 滚动到页面的目标位置(单位px) duration Number 否 滚动动画的时长,默认300ms,单位 ms 示例代码 jd.pageScrollTo({ scrollTop: 0, duration: 500 })

  • 我有一个类可以画一些非常简单的图形,比如直线、圆和矩形。线条可以动态扩展,有时当它们扩展到超出分辨率时,如果没有滚动条,就无法看到。因此,我已经将JScrollPane添加到JFrame中,但不幸的是,尽管已经调用了布局管理器,但滚动条还是无法滚动。 这是我所拥有的:-一个绘制组件(线条、矩形、圆形)的类-一个设置JFrame/JScrollPane的类 这是我的GUI类的摘录代码: 通过上面的代

  • 问题内容: 目标:每个月末所有报表的滚动/运行总计。 代码: 电流输出: 所需的输出: 问题答案: 听起来好像您想要运行总计。您可以为此使用分析功能。

  • 我希望能够向下滚动动态生成的电影列表。我尝试添加滚动窗格。 我在页面的开头有一个导航栏,中间有一个包含所有电影的jpanel。 您可以使用以下代码重新创建此示例: 我想做的是用我的鼠标滚轮向下滚动这个电影列表,而不看任何滚动条。它现在看起来应该和现在一模一样,但我希望能够向下滚动,看到所有的电影。 我不知道为什么它不起作用,这就是为什么我在这里问,希望有人能向我解释我做错了什么。

  • 问题内容: 我对Elasticsearch的滚动功能感到有些困惑。在Elasticsearch中,是否每当用户滚动结果集时都可以调用搜索API?从文档 这是否意味着它将每30秒执行一次搜索并返回所有结果集,直到没有记录为止? 例如,我的ES总共返回500条记录。我从ES获得的数据是两组分别有250条记录的记录。有什么办法可以让我先显示第一组250条记录,当用户滚动时再显示第二组250条记录。 问题