jQuery(五)--自定义动画、动画

article/2025/10/8 14:19:30

目录

一、自定义动画

1.1 animate()

1.2 animate()动画执行顺序

1.3 animate()动画回调函数和匀速运动

1.4 animate动画之stop()/delay()

二、动画

2.1 show()/hide()/toggle()

2.2 slideDown()/slideUp()/slideToggle()

2.3 fadeIn()/fadeOut()/fadeTo()/fadeToggle()


一、自定义动画

1.1 animate()

描述:jq对象的自定义动画

语法:jq对象.animate(JSON格式的参数,动画执行时间ms,["linear"/"swing"],fn)

参数:它有四个参数

  • 第一个参数是JSON,表示动画的终点(就是这个函数要变成什么样子)即CSS样式
  • 第二个参数是动画执行完毕所需的时间
  • 第三个参数是指定动画节奏,也就是速度变化,比如:linear
  • 第四个参数是自定义动画执行完毕之后的回调函数

注意:即使只有一个属性发生动画,也要写JSON,而不能写k,v形式

例如:

<script>$("div").animate({"left": 300,"top": 200,"right": 50},2000,function() {//自定义动画执行完毕之后的回调函数});
</script>

例子1:

公共部分:

 <style>div {width: 100px;height: 100px;background-color: orange;position: absolute;}
</style>
<div></div>

<script>$('div').click(function() {// 向右移动$(this).animate({"left": 800,// "width": "hide/toggle", 关键字"width": "200px","height": "200px","top": 100}, 2000).animate({ //向左移动"left": 0,"width": "100px","height": "100px","top": 0,"opacity": 0.5}, 2000);})
</script>

当点击div区域后:

局限性:animate()能够改变的是量化的属性

例子:

 <script>$("div").animate({"background-color": "blue"}, 2000);</script>

  • 执行结果发现div的背景颜色并没有在2秒钟内发生一个动画变化。所以很显然jQuery对于相当一部分的属性是不能够进行动画的。至少现在不行。而我们今天并不关心什么属性能动画,我们关心的是不能变化的属性:background-color、background-position不能参与动画!!!
  • jQuery能够改变的属性都是数值型的,比如width、height、font-size、opacity等


1.2 animate()动画执行顺序

 jq中动画的执行遵循两大原则:

公共部分:

<style>div {width: 100px;height: 100px;background-color: orange;position: absolute}.div2 {top: 150px;}
</style>
    <div class="div1"></div><div  class="div2"></div>

  • 同步原则:同一个元素如果存在多个animate命令,则按照添加顺序执行
 <script>$('div').animate({"left": 800}, 2000).animate({"width": 200}, 2000).animate({"height": 200}, 2000);</script>

  • 异步原则:不同元素如果存在多个animate命令,则他们同时执行

 <script>$('.div1').animate({"left": 800}, 2000);$('.div2').animate({"left": 800}, 2000);</script>

注意:

        对于一个jq对象而言,一个animate完成动画效果和多个animate分别完成动画效果完全不等价

 <script>//执行2000ms$('div').animate({"left": 800,"width": 200,"height": 200}, 2000);//不等价//执行6000ms$('div').animate({"left": 800}, 2000).animate({"width": 200}, 2000).animate({"height": 200}, 2000);
</script>

例子:

<script>$('div').animate({"left": 800}, 600).animate({"top": 400}, 600).animate({"left": 100}, 600).animate({"top": 100}, 600).slideUp().fadeIn();
</script>


1.3 animate()动画回调函数和匀速运动

公共部分:

     <script src="js/jquery-1.12.3.min.js"></script><style>div {width: 100px;height: 100px;background-color: orange;position: absolute}.div2 {top: 150px;}</style>
    <div class="div1"></div><div class="div2"></div>

1.回调函数(可选参数)

描述:表示animate执行完之后,要干什么

在回调函数中 $(this) 指的是运动的对象

<script>$('div').animate({"left": 800}, 5000, function() {$(this).css("background-color", "blue");});
</script>

2.匀速运动(可选参数)

 描述:jQuery的运动不是匀速的,而是先加速然后到终点缓慢减速。

 那么我们如果想进行匀速运动,就需要加一个参数叫做"linear"(线性的)。

  <script>$('.div1').animate({"left": 800}, 3000, function() {$(this).css("background-color", "blue");});$('.div2').animate({"left": 800}, 3000, "linear", function() {$(this).css("background-color", "blue");});</script>


1.4 animate动画之stop()/delay()

公共部分:

<script src="js/jquery-1.8.3.js"></script>
       * {margin: 0;padding: 0;}.one {width: 100px;height: 100px;background: orange;}.two {width: 500px;height: 10px;background: #f40;}
    <button>开始动画</button><button>停止动画</button><div class="one"></div><div class="two"></div>

1.4.1 delay()

用于高速度系统动画延迟时长

        $(function() {$("button").eq(0).click(function() {$(".one").animate({width: 400,}, 1000).delay(1000).animate({height: 260});});$("button").eq(1).click(function() {});});

1.4.2  stop()

stop(clearAllAnimation,goToEnd)

说明:

  1.  第一个参数表示是否清除所有动画,默认为false表示不清除所有动画(只清除当前动画)
  2.  第二个参数表示是否瞬间完成当前动画(达到动画结束的状态),默认为false表示不立即完成当前动画
        $(function() {$("button").eq(0).click(function() {$(".one").animate({width: 400,}, 1000)$(".one").animate({height: 260}, 1000)$(".one").animate({width: 100,}, 1000)$(".one").animate({height: 100,}, 1000);});$("button").eq(1).click(function() {// $("div").stop(); //立即停止当前动画,继续执行后续动画// $("div").stop(false); //立即停止当前动画,继续执行后续动画// $("div").stop(false, false); //立即停止当前动画,继续执行后续动画// $("div").stop(true); //立即停止当前和后续所有的动画// $("div").stop(true, false); //立即停止当前和后续所有的动画// $("div").stop(false, true); //立即停止当前动画,继续执行后续动画$("div").stop(true, true); //立即完成当前动画,并且停止后续动画});});


二、动画

<script src="js/jquery-1.8.3.js"></script>

2.1 show()/hide()/toggle()

都可接收两个参数,第一个参数表示执行所需的时间单位为毫秒;第二个参数表示执行完毕之后的回调函数

        * {margin: 0;padding: 0;}div {width: 200px;height: 200px;background: orange;display: none;}
    <button>显示</button><button>隐藏</button><button>切换</button><div></div>
        $(function() {//显示$("button").eq(0).click(function() {$("div").show(1000, function() {//动画执行完毕之后调用});});//隐藏$("button").eq(1).click(function() {$("div").hide(1000, function() {//动画执行完毕之后调用});});//切换$("button").eq(2).click(function() {$("div").toggle(1000, function() {//动画执行完毕之后调用});});});


2.2 slideDown()/slideUp()/slideToggle()

都可接收两个参数,第一个参数表示执行所需的时间单位为毫秒;第二个参数表示执行完毕之后的回调函数

        * {margin: 0;padding: 0;}div {width: 200px;height: 200px;background: orange;display: none;}
    <button>展开</button><button>收起</button><button>切换</button><div></div>
        $(function() {//显示$("button").eq(0).click(function() {$("div").slideDown(1000, function() {//动画执行完毕之后调用});});//隐藏$("button").eq(1).click(function() {$("div").slideUp(1000, function() {//动画执行完毕之后调用});});//切换$("button").eq(2).click(function() {$("div").slideToggle(1000, function() {//动画执行完毕之后调用});});});


2.3 fadeIn()/fadeOut()/fadeTo()/fadeToggle()

        * {margin: 0;padding: 0;}div {width: 200px;height: 300px;background: red;display: none;}
    <button>淡入</button><button>淡出</button><button>切换</button><button>淡入到</button><div></div>
        $(function() {//淡入$("button").eq(0).click(function() {$("div").fadeIn(1000, function() {});});//淡出$("button").eq(1).click(function() {$("div").fadeOut(1000, function() {});});//切换$("button").eq(2).click(function() {$("div").fadeToggle(1000, function() {});});//淡入到$("button").eq(3).click(function() {$("div").fadeTo(1000, 0.5, function() {});});});


轮播图示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>* {padding: 0;margin: 0;}ul,li {list-style: none;}/* 轮播图 */.banner {width: 650px;height: 360px;margin: 20px auto;overflow: hidden;position: relative;}.banner ul {width: 4000px;height: 360px;display: flex;}.banner > img {vertical-align: bottom;}/* 左右切换按钮 */.toggle {position: absolute;width: 100%;left: 0;top: 50%;transform: translateY(-50%);display: flex;justify-content: space-between;}/* 设置左右按钮的样式 */.toggle span {display: inline-block;width: 30px;height: 60px;background: rgba(0, 0, 0, 0.5);line-height: 60px;text-align: center;font-size: 40px;color: #fff;}/* 设置左右按钮的 hover 效果 */.toggle span:hover {cursor: pointer;background: rgb(231, 140, 20);}/* 指示点 */.point {width: 50%;height: 20px;position: absolute;bottom: 20px;left: 45%;z-index: 999;display: flex;justify-content: space-between;}.point div {width: 10%;height: 20px;background-color: aquamarine;border-radius: 10px;cursor: pointer;}.point .active {background-color: #f40;width: 15%;}</style></head><body><div class="banner"><ul class="ul"><li><img src="images/beijing/0.jpg" alt="" /></li><li><img src="images/beijing/1.jpg" alt="" /></li><li><img src="images/beijing/2.jpg" alt="" /></li><li><img src="images/beijing/3.jpg" alt="" /></li><li><img src="images/beijing/4.jpg" alt="" /></li><li><img src="images/beijing/0.jpg" alt="" /></li></ul><!-- 左右切换按钮 --><div class="toggle"><span id="pre">&lt;</span><span id="next">&gt;</span></div><!-- 指示点 --><div class="point"><div data-id="0" class="active"></div><div data-id="1"></div><div data-id="2"></div><div data-id="3"></div><div data-id="4"></div></div></div><script src="../Jquery/jquery-3.6.0.js"></script><script>// 0. 用来表示目前正在查看的图片序号let index = 0;// 1. 设置定时器,让 ul 在 1000ms 内向左移动一定距离let timer = setInterval(lunbo, 1000);//   封装轮播函数function lunbo() {// 当前轮播图片为最后一张时,让当前的图片变为第一张即index=0index++;let left = -index * 650 + "px";// 将所有的 div 都恢复为原来的背景色$(".point div").css("backgroundColor", "aquamarine").animate({ width: "10%" }, 100);// 通过 index 去设置当前 指示点 的背景颜色$(`.point div:eq(${index == 5 ? 0 : index})`).css("backgroundColor", "#f40").animate({ width: "15%" }, 100);/*** 当 index 为 4 时,我们需要正常去进行加加,加到5* 使其切换到下一张,切换到下一张这个动画效果在完毕之后* 我们应该使整个ul的margin-left变为0*/$(".ul").animate({ marginLeft: left }, 500, function () {if (index == 5) {$(".ul").css("marginLeft", "0px");index = 0;}});}/*** 2.* 当鼠标移动到图片上时,图片暂停轮播* 当鼠标移开时,轮播继续*/$(".banner").mouseenter(function () {clearInterval(timer);});$(".banner").mouseleave(function () {timer = setInterval(lunbo, 1000);});/*** 3.* 给指示点添加点击事件*/$(".point div").click(function () {let id = parseInt($(this).attr("data-id"));//  将 id 赋值给 index,这样下一张的切换才能接着上一张进行index = id;let left = -index * 650 + "px";$(".ul").animate({ marginLeft: left }, 500);// 将所有的 div 都恢复为原来的背景色$(".point div").css("backgroundColor", "aquamarine").animate({ width: "10%" }, 100);// 通过 index 去设置当前 指示点 的背景颜色// $(`.point div:eq(${index})`).css(//   "backgroundColor",//   "#f40"// ); 或$(this).css("backgroundColor", "#f40").animate({ width: "15%" }, 100);});/*** 4. 点击 左 按钮进行切换*/$("#pre").click(function () {index--;// console.log(index); // -1if (index < 0) {index = 4;$(".ul").css("marginLeft", (-index * 650) + "px" );}let left = -index * 650 + "px";$(".ul").animate({ marginLeft: left }, 500);$(".point div").css("backgroundColor", "aquamarine").animate({ width: "10%" }, 100);$(`.point div:eq(${index})`).css("backgroundColor", "#f40").animate({ width: "15%" }, 100);});/*** 5. 点击 右 按钮进行切换*/$("#next").click(function () {index++;if (index == 5) {$(".ul").css("marginLeft", "0px");index = 0;}let left = -index * 650 + "px";$(".ul").animate({ marginLeft: left }, 500);$(".point div").css("backgroundColor", "aquamarine").animate({ width: "10%" }, 100);$(`.point div:eq(${index})`).css("backgroundColor", "#f40").animate({ width: "15%" }, 100);});</script></body>
</html>

 


http://chatgpt.dhexx.cn/article/dgUp575G.shtml

相关文章

Android ProgressBar 自定义动画

源码地址&#xff1a; https://download.csdn.net/download/dreams_deng/12236355 1. 自定义圆形动画 1.1 布局 <!-- indeterminateDrawable 旋转图片indeterminateDuration 旋转速度--><ProgressBarandroid:id"id/pb_welcome_loading"android:layout_…

Qt自定义动画移动路径

在使用Qt实现动画时&#xff0c;一般使用QPropertyAnimation来实现&#xff0c;一般我们实现控件的移动动画都是走直线&#xff0c;我们如何实现自己想要的移动路径呢&#xff0c;比如走圆弧。下面介绍通过QPropertyAnimation实现自定义动画移动路径&#xff0c;比如走圆曲线、…

Flutter开发之——动画-自定义动画

一 为什么要进行自定义动画 当系统提供的动画不满足业务需求时&#xff0c;就需要我们自己进行自定义动画通过自定义动画&#xff0c;可以提高自定义组件的能力 二 自定义动画过程 继承StatefulWidget &#xff0c;完成动画界面的绘制setState 中动画执行及状态监听并刷新UId…

JQuery自定义动画——animate()学习

JQuery自定义动画——animate()学习 可以使 用animate 方法创建和实现自定义动画&#xff0c;animate() 方法通过执行 CSS 属性集的自定义动画&#xff0c;满足更多复杂多变的要求。 该方法通过CSS样式将元素从一个状态改变为另一个状态。即通过CSS属性值逐渐改变的&#xff0…

搞定动画之 JQuery 中的自定义动画

古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志——苏轼 写在前面 所谓的自定义动画就是通过 jQuery 提供的方法来完成我们自己想要的动画效果 animate()方法 jQuery 提供了 animate() 方法完成自定义动画效果&#xff0c;该方法具有两种用法。 用…

animate.css 自定义动画

在使用animate.css 的时候 动画的高度超过了预期的高度 在这种情况下肯定是过不了测试的&#xff0c;怎么办的&#xff1f; <div class"fold-div animated " :class"{slideInDown:foldDivHeightShow}" </div>上边代码可以知道 用的是 slideInDown…

JQuery中的animate自定义动画

animate()方法用于创建自定义动画。 概述 .animate( properties [, duration ] [, easing ] [, complete ] ) properties 类型: PlainObject 一个CSS属性和值的对象,动画将根据这组对象移动。 duration (默认: 400) 类型: Number or String 一个字符串或者数字决定动画将运…

jQuery自定义动画

首先创建一个新的html&#xff0c;在body下面输入源代码&#xff1b;div标签代表的是颜色的面板&#xff0c;button标签代表的是按钮当我们输入好了源代码之后呢&#xff0c;那我们的源代码部分已经完成了&#xff0c;接下来剩下的就只有css样式和jQuery函数了 接下来我们先完成…

自定义动画

自定义动画非常简单&#xff0c;只需要实现它的applyTransformation的逻辑就可以了&#xff0c;不过通常情况下&#xff0c;还需要覆盖父类的initialize方法来实现一些初始化工作。applyTransformation方法有如下两个参数。 applyTransformation(float interpolatedTime, Trans…

自定义控件三部曲之动画篇(四)——ValueAnimator基本使用

前言&#xff1a;不要让别人的无知断送了你的梦想&#xff0c;永远坚信你所坚信的。 相关文章&#xff1a; 《Android自定义控件三部曲文章索引》&#xff1a;http://blog.csdn.net/harvic880925/article/details/50995268 一、概述 long long ago&#xff0c;我写过几篇有关…

[HTML/CSS]动画效果以及自定义动画效果

一&#xff0c;实现div或者文字的当鼠标浮于其上时的动画效果&#xff1a; 1&#xff0c;transition加在div中&#xff0c;实现动画效果的过渡效果&#xff0c;transition: all 3s;其中all表示所有样式都参与过渡&#xff0c;3s表示实现效果的时间&#xff1b;linear为使动画匀…

css如何让文字强制换行

我们在编写html时&#xff0c; 有时候&#xff0c;常常需要在移动端用到一些table的属性&#xff0c;来呈现一些数据。如果说我们的数据内不含连续的数字或字母时&#xff0c;显示是不会出错的。 可是如果我们要呈现的数据为数字或长字母信息时&#xff0c;常常会出现这样的情…

CSS文本强制换行

发生背景&#xff1a; 在没有空格的&#xff08;字母、数字&#xff0c;符号&#xff09;&#xff0c;超过容器宽度时就会把容器撑大&#xff0c;不换行。所以在这里需要对其设置强制换行的样式&#xff1b; 解决方案&#xff1a; /* word-wrap: break-word; */ /…

css强制换行和禁止换行

强制换行 word-break: break-all; /* 只对英文起作用&#xff0c;以字母作为换行依据。 */ word-wrap: break-word; /* 只对英文起作用&#xff0c;以单词作为换行依据。 */ white-space: pre-wrap; /* 只对中文起作用&#xff0c;强制换行。 */ 禁止换行 white-space:…

Css 强制英文自动换行以及word-wrap、word-break、white-space、overflow的用法

关于换行的几个知识点&#xff1a; 1、Css强制英文或数字自动换行 2、让中文按关键词或标签换行 3、Css强制中文不自动换行 4、Css强制中文不自动换行并自动隐藏&#xff1b; 5、Css中英文或数字的超出部分自动省略号…&#xff1b; 6、Css中word-wrap、word-break、white-spa…

功能测试的用例测试方法

一、等价类划分法&#xff1a; 即把所有可能输入的数据划分为若干个区域&#xff0c;然后从每个区域中取少数有嗲表行的数据进行测试。 例1&#xff1a;某网页的年龄输入框要求输入20~99的整数。&#xff08;说明&#xff1a;当输入的数据复合取值范围要求时提示&#xff1a;…

计算机性能检查方法,测试电脑性能的方法步骤详解

想知道自己电脑的运行性能吗?下面就让学习啦小编教大家如何测试电脑的性能吧。 测试电脑性能的方法 1.使用系统功能进行评测电脑的运行性能 这种方法就是通过windows自带的评测功能进行测试。 打开资源管理器&#xff0c;右键点击“属性”&#xff0c;进入到相应的窗口中来! 如…

性能测试七种常用方法,以及四大应用领域

文章目录 什么是性能测试性能指标测试模型测试种要有监控有预定条件性能测试中要有场景性能测试中有分析调优性能测试结果报告 常用的七种性能测试方法后端性能测试前端性能测试代码级性能测试压力测试配置测试并发测试可靠性测试 性能测试的四大应用领域能力验证能力规划性能调…

测试方法

一、 测试方法的分类 静态测试方法动态测试方法 1. 静态测试方法 不执行程序的测试方法。主要用于测试文档和代码&#xff08;文档&#xff09;。 2. 动态测试方法 通过运行程序来发现缺陷的测试方法。 黑盒测试方法白盒测试方法灰盒测试方法&#xff08;白 黑&#xff0…

无线网卡性能怎么测试软件,无线性能测试平台和方法

无线性能测试平台和方法 无线性能测试平台和方法 JCG JYR-N495 无线路由器 测试平台&#xff1a; 客户端&#xff1a;Thinkpad X200笔记本 450M外置无线网卡 服务器端&#xff1a;Thinkpad T400笔记本 测试软件&#xff1a;NetIQ Chariot v5.4&#xff1b;Endpoint6.0。 测试方…