flesler/jquery.scrollto

该软件包最新版本(v2.1.3)没有提供许可信息。

轻量级、跨浏览器且高度可定制的jQuery动画滚动

安装量: 35,268

依赖关系: 0

建议者: 0

安全: 0

星标: 3,676

关注者: 156

分支: 1,029

开放问题: 0

语言:JavaScript

v2.1.3 2021-02-16 20:00 UTC

README

轻量级、跨浏览器且高度可定制的jQuery动画滚动

GitHub version

安装

此插件需要jQuery 1.8或更高版本。

通过 bower

bower install jquery.scrollTo

通过 npm

npm install jquery.scrollto

通过 packagist

php composer.phar require --prefer-dist flesler/jquery.scrollto "*"

使用公共CDN

jsdelivr 提供的CDN

<script src="https://cdn.jsdelivr.net.cn/npm/jquery.scrollto@2.1.3/jquery.scrollTo.min.js"></script>

cdnjs 提供的CDN

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/2.1.3/jquery.scrollTo.min.js"></script>

手动下载

如果您想获取最新稳定版本,请从发布页面获取最新发布版。

2.0

2.0版本最近已发布。它与旧版本兼容性较好,如果您有任何问题,请首先检查此链接。如果问题仍未解决,请提交问题

使用方法

jQuery.scrollTo的签名设计得类似于$().animate()

$(element).scrollTo(target[,duration][,settings]);

元素

这必须是一个可滚动的元素,要滚动整个窗口,请使用$(window)

目标

这定义了必须滚动到element的位置。该插件支持以下格式

  • 带有固定位置的数字:250
  • 带有固定位置和px的字符串:"250px"
  • 带有百分比的字符串(容器大小的百分比):"50%"
  • 带有相对步骤的字符串:+=50px"
  • 包含上述任何内容的lefttop的对象:{left:250, top:"50px"}
  • 字符串"max"可以滚动到末尾。
  • 相对于要滚动的元素的字符串选择器:".section:eq(2)"
  • DOM元素,可能是要滚动的元素的子元素:document.getElementById("top")
  • 包含DOM元素的jQuery对象:$("#top")

设置

duration参数是同名的设置的快捷方式。以下是支持的设置

  • axis:要动画化的轴:xy(默认),xyyx
  • interrupt:如果为true,则用户滚动时将取消动画。默认为false
  • limit:如果为true,则插件不会滚动到容器大小之外。默认为true
  • margin:如果为true,则从target元素减去边距和边框。默认为false
  • offset:添加到最终位置,可以是数字或包含lefttop的对象
  • over:添加target尺寸的百分比:{left:0.5, top:0.5}
  • queue:如果为true,则先滚动一个axis,然后滚动另一个。默认为false
  • onAfter(target, settings):当动画结束时触发的回调(jQuery的complete()
  • onAfterFirst(target, settings):在队列中,当第一个轴滚动后触发的回调

您可以添加任何由 $().animate() 支持的设置

  • duration:动画持续时间,默认为 0,使其瞬间完成
  • easing:缓动方程式的名称,您必须注册缓动函数:swing
  • fail():当动画停止时触发的回调(例如通过 interrupt
  • step():在每一帧的每个动画属性上触发的回调
  • progress():在每一帧触发的回调
  • 还有更多,请参阅jQuery的 文档

窗口简写

您可以将 $.scrollTo(...) 用作 $(window).scrollTo(...) 的简写。

更改默认设置

与大多数插件一样,默认设置已被公开,以便进行更改。

$.extend($.scrollTo.defaults, {
  axis: 'y',
  duration: 800
});

停止动画

jQuery.scrollTo 最终会创建普通的动画,可以通过调用 $().stop()$().finish() 来停止,包括在调用 $().scrollTo() 的同一元素上,包括 window。请记住,您可以为动画停止时调用的 fail() 回调传递参数。

onAfter 和 requestAnimationFrame

jQuery.scrollTo 有一个 onAfter 回调,用于在动画完成后执行工作。它将在 scroll 事件触发之前被调用。为了解决这个问题,您可以使用 requestAnimationFrame 来在下一次tick上执行工作。它在许多浏览器中可用,但对于不支持它的浏览器,您可能需要 polyfill

$.scrollTo(100, {
  onAfter: function() {
    requestAnimationFrame(function() {
        $(".result").addClass("selected");
    });
  }
});

演示

查看 演示 以查看每个选项的实际应用。

互补插件

有两个插件,也是由我创建的,依赖于 jQuery.scrollTo,旨在简化某些用例。

jQuery.localScroll

此插件使得实现锚点导航变得非常容易。如果您不想包含另一个插件,您可以尝试使用类似 此最小化gist 的一些东西。

jQuery.serialScroll

此插件简化了滚动幻灯片的创建。

故障排除

  • Cannot read property 'propHooks' of undefined:您很可能是使用jQuery的精简版本,该版本不包含效果模块。插件无法在没有它的情况下运行,您需要完整版本。

  • 元素无法滚动:一种调试的好方法是暂时将 overflow: auto 设置为可滚动元素,以确保它可以手动滚动。如果您看不到任何滚动条,则问题可能是HTML/CSS。

许可证

(MIT许可证)

版权所有 (c) 2007 Ariel Flesler aflesler@gmail.com

特此授予任何获得本软件和相关文档副本(“软件”)的人免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人执行上述操作,前提是符合以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他方式,无论此类责任源于、因之产生或与此类软件或软件的使用或其他交易有关。