当前位置: 首页 > 面试题库 >

用鼠标滚轮控制页面滚动动画

白博易
2023-03-14
问题内容

我的意思是滚动时会轻松。


问题答案:

var $pages = $(“.page”),

    tot = $pages.length,

    c = 0, pagePos = 0, down = 0, listen = true;



$('html, body').on('DOMMouseScroll mousewheel', function(e) {



  e.preventDefault();

  if(!listen)return;



  listen = false;



  down = e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0;

  c = Math.min(Math.max(0, down ? ++c : --c), tot-1);

  pagePos = $pages.eq(c).offset().top;



  $(this).stop().animate({scrollTop: pagePos}, 650, function(){

    listen = true;

  });



});


*{margin:0;}

.page{min-height:100vh;}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="page" style="background:#0bf">PAGE 1</div>

<div class="page" style="background:#fb0">PAGE 2</div>

<div class="page" style="background:#0fb">PAGE 3</div>

<div class="page" style="background:#b0f">PAGE 4</div>

PS:
使用.position().top;,如果你的.pages为像一个滚动的DIV内$("#pagesParent")(而不是$('html, body')

注意:
对于 移动设备, 您可能希望针对浏览器的标签栏高度调整值(最好还是完全避免这种情况)。你有主意



 类似资料:
  • 问题内容: 在鼠标滚轮上滚动它执行水平滚动。 已编辑 好吧,firebug说他在用 问题答案: 看来他只是将mousewheel事件映射到滚动区域。在IE中,仅通过使用方法就非常容易-滚动水平条的量为垂直条通常滚动的量。其他浏览器不支持该方法,因此您必须随心所欲地滚动任意数量:

  • 本文向大家介绍js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果),包括了js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现的鼠标滚轮滚动切换页面效果的方法。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 更多关于jQuery特效相关内容感兴趣的读者可查看本站专题:《jQuery

  • 我有一个JScrollPane,它的内容窗格是一个JXList。当我在列表上使用鼠标滚轮时,列表一次执行三(3)项。这也适用于表,无论行高如何。我如何改变这一点,使-无论平台-列表和表的滚动距离正好是1项?设置块增量不会削减它,因为表中的某些行具有不同的高度。

  • 我想写个动画。比如说鼠标向上滚动,一个div往上运动。当我鼠标向下的时候,div往下运动。 有没有这种动画库?我以前的做法是判断滚动方向。然后分别执行不同的动画函数。当然了我的一个动画里面,肯定是包含好几个运动元素的。

  • 问题内容: 我有一个JScrollPane,其内容窗格是JXList。当我在列表上使用鼠标滚轮时,该列表一次执行三(3)个项目。无论行高如何,这也适用于表格。我如何更改此设置,以便无论平台如何,列表和表格的滚动距离都仅为1?设置块增量不会削减它,因为表中的某些行具有不同的高度。 问题答案: 出于纯粹的兴趣(有点无聊),我创建了一个工作示例: 真正的魔力是在custom中完成的,我们每次都将当前的“

  • 我的问题是: 我的解决方案是使用mousewheel/scroll事件处理程序来知道用户是否在移动,然后计算我是否在页面底部并隐藏或显示元素。。。 一切正常,但我有点担心 由于主线程正忙,“mousewheel”输入事件的处理延迟了123毫秒。将事件处理程序标记为“被动”以使页面更加响应。 这(我猜)是因为这个代码 跑太多次了。 那么,我怎样才能使这段代码更有效率呢 是否有办法在滚动后运行事件?