.stop() 和 .animate() jQuery 函数转换为 javascript

2023-12-03

我也想学习 JavaScript。并查看各种 jQuery 函数及其等效的 JavaScript。

我想将此 jQuery 函数转换为其等效的 JavaScript 函数?我怎样才能做到这一点?

$('.sample').stop().animate({
    left: '-102px'
}, 1000);

简而言之,jQuery 动画是一种循环计时器,它会在每次计时器滴答时更改一个或多个 CSS 属性。

此外,jQuery 还实现了一种补间算法,该算法会在每个计时器滴答声上进行计算,无论动画是提前还是落后于计划,并进行调整,以便动画始终在指定的准确时间完成。

此外,jQuery 还实现了一个动画队列,以便可以将多个动画链接在一起(前一个动画完成后开始下一个动画)。

此外,jQuery 支持缓动函数,允许您指定非线性动画,根据特定算法在一段时间内改变其速度。

仅供参考,jQuery javascript 源代码是完全可用如果您想了解更多详细信息。这项工作的核心是一个名为的本地函数doAnimation(),尽管大部分工作是在称为的函数中完成的step and update可以通过定义找到jQuery.fx.prototype.

这是另一个答案,显示了简单的淡入淡出动画在纯 JavaScript 中。

这是一个一般教程关于动画。

您可以看到关于使用计时器进行动画的讨论here.

你可以看看关于补间的讨论here.

这是您的特定动画的 JavaScript 版本:

// node is the DOM element to animate
// prop is the CSS property name to animate
// end is the CSS value to animate to (only supports px units)
// duration is the time of the animation in ms
// fn is an optional callback when the animation is done
//     fn is called like this fn(node, arg)
// arg is an optional argument that is passed to the callback
// context is an optional argument that is the this pointer for the function
function animate(node, prop, end, duration, fn, arg, context) {
    var stepTime = 20;
    var startTime = new Date().getTime();
    var start = parseInt(getComputedStyle(node).getPropertyValue(prop), 10);
    if (typeof end === "string") {
        end = parseInt(end, 10);
    }

    function step() {
        // calc how much time has elapsed
        var nextValue, done, portionComplete;
        var timeRunning = new Date().getTime() - startTime;
        if (timeRunning >= duration) {
            nextValue = end;
            done = true;
        } else {
            portionComplete = timeRunning / duration;
            nextValue = ((end - start) * portionComplete) + start;
            done = false;
        }
        // set the next value
        node.style[prop] = nextValue + "px";
        if (!done) {
            setTimeout(step, stepTime);
        } else {
            if (fn) {
                context = context || window;
                fn.call(context, node, arg);
            }
        }
    }
    // start the animation
    step();
}

工作演示:http://jsfiddle.net/jfriend00/Mc3xD/


为了简单理解,这并没有实现.stop()jQuery 示例的一部分,因为这需要一个单独的数据结构来跟踪给定对象上运行的每个动画计时器,这可以在支持的更复杂的版本中看到stop(): http://jsfiddle.net/jfriend00/mp4Yq/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.stop() 和 .animate() jQuery 函数转换为 javascript 的相关文章

随机推荐

  • 从 .m matlab 文件中声明的矩阵创建 numpy 数组

    一位同事留下了一些我想用 Numpy 分析的数据文件 每个文件都是一个 matlab 文件 例如data m 并具有以下格式 但有更多的列和行 values 24 92 23 66 22 55 24 77 23 56 22 45 24 54
  • 查找并替换数组中的特定哈希及其值

    在数组中查找特定哈希并就地替换其值的最有效方法是什么 以便数组也发生更改 到目前为止 我已经得到了这段代码 但在具有大量数据的实际应用程序中 这成为应用程序中最慢的部分 这可能会泄漏内存 因为当我对每个 websocket 消息执行此操作时
  • 实体框架对同一个表的多次引用

    我在使用 EF 代码优先创建数据库时遇到问题 我有一个实体播放器和一个实体炸船 每个友谊都涉及两个玩家 其中一名玩家是友谊的发送者 另一位是友谊的接收者 这是我的实体 播放器 cs public class Player public in
  • 如何避免 STRING_AGG 函数中的重复

    我的查询如下 select u Id STRING AGG sf Naziv as Ustrojstvena jedinica ISNULL CONVERT varchar 200 STRING AGG TRIM p Naziv 121 a
  • 如何从 groovy/grails 查询 mongodb?

    我是否必须有一个域对象才能查询mongodb 如果我只想显示一些原始数据怎么办 查询的语法是什么mongodb从我的控制器 I tried def var db nameOfMyCollection find 但它说我的控制器类中没有 db
  • 优化 .NET 中 System.Drawing 的 PNG 输出 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有一个例程 它读取图像
  • BeautifulSoup 返回与查看源代码不同的 html

    我是使用 BeautifulSoup 的新手 所以如果我的问题很愚蠢 请原谅我 然而 自早上 6 点以来 我一直在谷歌上搜索并尝试在每个 stackoverflow 线程中尝试建议 但无济于事 我的问题是我有一个带有基因名称的 csv 文件
  • perl:执行多个系统进程并等待它们完成

    目前 在我的 Perl 脚本中 我进行如下调用 system long program1 long program2 long program3 wait 我希望能够记录每个长时间运行的命令执行的时间 同时仍然异步执行它们 我知道系统调用会
  • Python Altair 生成选择表

    我有一个包含一堆分箱数据的直方图 我想知道如果我从直方图中选择一个条形 是否可以生成一个表格 并且它会显示原始数据框中的数据 您可以使用以下命令创建表格的外观mark text 这是基于文档中此页面的示例 import altair as
  • 在 Spring 5 中与子级共享父级 Spring 上下文

    如何在 Spring 5 中与孩子共享父上下文 使用 spring 4 我们可以通过locatorFactorySelector as context param
  • 使用 jQuery 调用远程 ASMX 的问题

    我一直在尽力正确理解这一点 XML SOAP 和 JSON 响应之间有什么区别 人们如何知道如何调用其响应为上述之一的 Web 服务 如果我偏离了轨道 请纠正我 我问这个问题的原因是因为我试图在我的 NET3 5 web应用程序中从jQue
  • Codeigniter - Active Records 是否容易受到 SQL 注入攻击?

    刚刚读过this堆栈溢出 因此让我想知道是否可以通过 CI 中的活动记录进行 SQL 注入 在我的项目中的大多数地方 对于用户注册和用户配置文件更新 我都完成了如下 SQL 插入 控制器 name this gt input gt post
  • Katalon 和 Chrome 无头模式的屏幕截图

    我使用以下代码来截取 Katalon Studio 脚本中警告和错误消息的屏幕截图 import ru yandex qatools ashot AShot import ru yandex qatools ashot Screenshot
  • 如何将 React 开发工具与 React Native 结合使用?

    我目前正在使用 React Native 来开发 Android 应用程序 并在 genymotion 中进行模拟 我尝试使用反应开发人员工具调试我的应用程序 如下所述here JS 错误在控制台中抛出 但我无法在 chrome 开发工具中
  • Outlook .items.restrict 使用两个过滤器

    我正在使用一个打开电子邮件并下载其附件的脚本 现在我可以选择下载最新电子邮件中的最新附件 Sub CTEmailAttDownload Const olFolderInbox As Integer 6 gt Path for the att
  • C# 中暂停/恢复线程

    当达到某个值时 我尝试暂停所有线程 但我做不到 我希望当我达到这个值时 所有线程都暂停 10 秒 并在这 10 秒后所有线程再次启动 我尝试过 Threads Sleep Threads Interrupt and Threads Abor
  • rmarkdown 在 kable 中转义 html

    我正在尝试为我的 kable 表的单元格提供一些自定义 HTML 类 但问题是 div 的编码就像单元格的内容一样 我记得闪亮的桌子有一种方法可以让 celle 的内容逃逸并按原样解释 rmarkdown knitr 有这样的东西吗 例如
  • 图像顶部的光滑滑块文本

    我正在尝试制作一个非常正常的轮播 在垂直中间的两侧有两个箭头 在图像顶部的中间有一个按钮的文本 尽管箭头和文本都是绝对的并且具有更高的 z index 但我无法让任何内容出现在图像顶部 这是带有我的代码的代码笔 http codepen i
  • javascript event.target 在 mozilla 中不起作用

  • .stop() 和 .animate() jQuery 函数转换为 javascript

    我也想学习 JavaScript 并查看各种 jQuery 函数及其等效的 JavaScript 我想将此 jQuery 函数转换为其等效的 JavaScript 函数 我怎样才能做到这一点 sample stop animate left