- jQuery 教程
- jQuery - 首页
- jQuery - 路线图
- jQuery - 概述
- jQuery - 基础
- jQuery - 语法
- jQuery - 选择器
- jQuery - 事件
- jQuery - 属性
- jQuery - AJAX
- jQuery DOM 操作
- jQuery - DOM
- jQuery - 添加元素
- jQuery - 删除元素
- jQuery - 替换元素
- jQuery CSS 操作
- jQuery - CSS 类
- jQuery - 尺寸
- jQuery - CSS 属性
- jQuery 效果
- jQuery - 效果
- jQuery - 动画
- jQuery - 链式调用
- jQuery - 回调函数
- jQuery 遍历
- jQuery - 遍历
- jQuery - 遍历祖先节点
- jQuery - 遍历子孙节点
- jQuery UI
- jQuery - 交互
- jQuery - 小部件
- jQuery - 主题
- jQuery 参考
- jQuery - 选择器
- jQuery - 事件
- jQuery - 效果
- jQuery - HTML/CSS
- jQuery - 遍历
- jQuery - 其他
- jQuery - 属性
- jQuery - 工具函数
- jQuery 插件
- jQuery - 插件
- jQuery - PagePiling.js
- jQuery - Flickerplate.js
- jQuery - Multiscroll.js
- jQuery - Slidebar.js
- jQuery - Rowgrid.js
- jQuery - Alertify.js
- jQuery - Progressbar.js
- jQuery - Slideshow.js
- jQuery - Drawsvg.js
- jQuery - Tagsort.js
- jQuery - LogosDistort.js
- jQuery - Filer.js
- jQuery - Whatsnearby.js
- jQuery - Checkout.js
- jQuery - Blockrain.js
- jQuery - Producttour.js
- jQuery - Megadropdown.js
- jQuery - Weather.js
- jQuery 有用资源
- jQuery - 问答
- jQuery - 快速指南
- jQuery - 有用资源
- jQuery - 讨论
jQuery - 动画
让我们学习如何使用 jQuery 的 animate() 方法在网页或其他 jQuery(Javascript)应用程序上创建自定义动画。
jQuery animate() 方法
jQuery 的 animate() 方法用于通过更改 DOM 元素的 CSS 数值属性(例如,宽度、高度、边距、填充、不透明度、顶部、左侧等)来创建自定义动画。
以下是 animate() 方法的简单语法
$(selector).animate({ properties }, [speed, callback] );
jQuery animate() 方法不能用于动画非数值属性,例如颜色或背景颜色等。尽管您可以使用 jQuery 插件 jQuery.Color 来动画此类属性。
您可以应用任何 jQuery 选择器来选择任何 DOM 元素,然后应用 jQuery animate() 方法对其进行动画处理。以下是所有参数的描述,这些参数使您可以完全控制动画:
属性 (properties) − 一个必需参数,定义要进行动画处理的 CSS 属性,这是调用中唯一必需的参数。
速度 (speed) − 一个可选字符串,表示三种预定义速度之一(“slow”、“normal”或“fast”)或运行动画的毫秒数(例如 1000)。
回调函数 (callback) − 一个可选参数,表示在动画完成时要执行的函数。
动画先决条件
(a) - animate() 方法不会将隐藏元素作为效果的一部分显示出来。例如,给定 $(selector).hide().animate({height: "20px"}, 500),动画将运行,但元素将保持隐藏状态。
(b) - 要将 DOM 元素的位置作为动画的一部分进行操作,首先需要将其位置设置为 relative、fixed 或 absolute,因为默认情况下,所有 HTML 元素都具有 static 位置,并且无法使用 animate() 方法移动它们。
示例
以下示例演示如何使用 animate() 方法将一个 <div> 元素向右移动,直到其 left 属性达到 250px。接下来,当我们单击左按钮时,相同的 <div> 元素将返回到其初始位置。
<!doctype html> <html> <head> <title>The jQuery Example</title> <script src = "https://tutorialspoint.com/jquery/jquery-3.6.0.js"></script> <script> $(document).ready(function() { $("#right").click(function(){ $("div").animate({left: '250px'}); }); $("#left").click(function(){ $("div").animate({left: '0px'}); }); }); </script> <style> #left, #right{margin:3px;border:2px solid #666; height:30px; width:100px;cursor:pointer;} #box{position:relative;margin:3px;padding:12px;border:2px solid #666; height:100px; width:180px;} </style> </head> <body> <p>Click on Left or Right button to see the result:</p> <div id="box" style="background-color:#9c9cff;">This is Box</div> <button id="right" style="background-color:#fb7c7c;">Right Move</button> <button id="left" style="background-color:#93ff93;">Left Move</button> </body> </html>
具有自定义速度的动画
我们可以使用不同的速度来动画 DOM 元素的不同 CSS 数值属性(例如,宽度、高度或左侧)。
示例
让我们重写上面的示例,我们将使用 1000 毫秒的速度参数来动画 <div> 的向右移动,并使用 5000 毫秒的速度参数来动画向左移动。
<!doctype html> <html> <head> <title>The jQuery Example</title> <script src = "https://tutorialspoint.com/jquery/jquery-3.6.0.js"></script> <script> $(document).ready(function() { $("#right").click(function(){ $("div").animate({left: '250px'}, 1000); }); $("#left").click(function(){ $("div").animate({left: '0px'}, 5000); }); }); </script> <style> #left, #right{margin:3px;border:2px solid #666; height:30px; width:100px;cursor:pointer;} #box{position:relative;margin:3px;padding:12px;border:2px solid #666; height:100px; width:180px;} </style> </head> <body> <p>Click on Left or Right button to see the result:</p> <div id="box" style="background-color:#9c9cff;">This is Box</div> <button id="right" style="background-color:#fb7c7c;">Right Move</button> <button id="left" style="background-color:#93ff93;">Left Move</button> </body> </html>
使用预定义值的动画
我们可以使用字符串 'show'、'hide' 和 'toggle' 作为 CSS 数值属性的值。
示例
以下是一个示例,我们使用两个按钮将元素的 left 属性设置为 hide 或 show。
请注意,使用这些值设置任何数值 CSS 属性都会产生相同的结果。例如,如果您将元素的宽度或高度设置为 hide,那么它将隐藏元素,无论您设置的是其宽度属性还是高度属性。
<!doctype html> <html> <head> <title>The jQuery Example</title> <script src = "https://tutorialspoint.com/jquery/jquery-3.6.0.js"></script> <script> $(document).ready(function() { $("#right").click(function(){ $("div").animate({left: 'hide'}); }); $("#left").click(function(){ $("div").animate({left: 'show'}); }); }); </script> <style> #left, #right{margin:3px;border:2px solid #666; height:30px; width:100px;cursor:pointer;} #box{position:relative;margin:3px;padding:12px;border:2px solid #666; height:100px; width:180px;} </style> </head> <body> <p>Click on Left or Right button to see the result:</p> <div id="box" style="background-color:#9c9cff;">This is Box</div> <button id="right" style="background-color:#fb7c7c;">Right Move</button> <button id="left" style="background-color:#93ff93;">Left Move</button> </body> </html>
具有多个属性的动画
jQuery animate() 允许我们同时动画元素的多个 CSS 属性。
示例
以下是一个动画 <div> 元素多个 CSS 属性的示例。当我们单击向右移动按钮时,此 <div> 开始向右移动,直到其 left 属性值为 250px,同时元素的不透明度降低到 0.2,并且框的宽度和高度减小到 100px。接下来,当我们单击向左移动按钮时,此框将返回到其初始位置和大小。
<!doctype html> <html> <head> <title>The jQuery Example</title> <script src = "https://tutorialspoint.com/jquery/jquery-3.6.0.js"></script> <script> $(document).ready(function() { $("#right").click(function(){ $("div").animate({left: '250px', width:'100px', height:'100px', opacity:0.2}); }); $("#left").click(function(){ $("div").animate({left: '0px',width:'180px', height:'100px', opacity:1.0}); }); }); </script> <style> #left, #right{margin:3px;border:2px solid #666; height:30px; width:100px;cursor:pointer;} #box{position:relative;margin:3px;padding:12px;border:2px solid #666; height:100px; width:180px;} </style> </head> <body> <p>Click on Left or Right button to see the result:</p> <div id="box" style="background-color:#9c9cff;">This is Box</div> <button id="right" style="background-color:#fb7c7c;">Right Move</button> <button id="left" style="background-color:#93ff93;">Left Move</button> </body> </html>
具有队列功能的动画
考虑这样一种情况:您需要应用多个动画,这意味着您需要一次又一次地调用 animate() 方法。在这种情况下,jQuery 通过先进先出 (FIFO) 队列处理这些动画请求,并允许根据您的创意创建有趣的动画。
示例
以下是一个示例,我们调用 animate() 方法 4 次,将 <div> 依次带到多个方向。
<!doctype html> <html> <head> <title>The jQuery Example</title> <script src="https://tutorialspoint.com/jquery/jquery-3.6.0.js"></script> <script> $(document).ready(function() { $("button").click(function(){ $("div").animate({left: '250px'}); $("div").animate({top: '100px'}); $("div").animate({left: '0px'}); $("div").animate({top: '0px'}); }); }); </script> <style> button {margin:3px;border:2px solid #666; height:30px; width:180px;cursor:pointer;} #box{position:relative;margin:3px;padding:2px;border:2px solid #666; height:30px; width:170px;} </style> </head> <body> <p>Click on Start Animation button to see the result:</p> <div id="box" style="background-color:#9c9cff;">This is Box</div> <button style="background-color:#93ff93;">Start Animation</button> </body> </html>
jQuery 效果参考
您可以在以下页面获取所有 jQuery 效果方法的完整参考:jQuery 效果参考。