jQuery 动画制作与特效

使用show()和hide()方法

在普通的javascript编程中,要实现元素的显示、隐藏通常是利用其CSS的display属性或者visibility属性。

在jQuery中提供了show()和hide()两个方法,来直接实现元素对象的显示和隐藏。

jQuery代码:

HTML代码:

制作多级菜单

jQuery代码:

HTML代码:

理解: e.target是引发事件的元素

this是当前执行事件句柄的元素,this等于e.currentTarget(在事件冒泡阶段中的当前DOM元素 )

if(this==e.target)语句作用。

this指的是定义事件的所有含有ul的li标签。

e.target指的是触发事件的对象,可能是包含ul的li, 也可能是该li内部的任何元素, 显然我们不能点击内部任意位置都触发事件,

所以必须添加判断, 只有点击当前菜单选项时才执行收起子菜单动作;如果去掉这个判断, 那么只要你点击二级菜单的任意位置, 就会收起菜单,

显然是不行的, 你可以去掉判断看看效果就明白了。

使用toggle()方法实现显隐切换

曾经介绍过toggle()方法,该方法接受两个函数作为参数,相互切换;

如果不接受参数,toggle()方法将默认为在show()和hide()之间切换,因此修改上面案列为:

HTML代码:

元素显隐和渐入渐出效果

show(duration,[callback]) duration表示动画执行的时间长短,可以是表示速度的字符串,包括slow、normal、fast,

也可以是表示时间的整数(毫秒);callback为可选的回调函数,在动画完成后执行;

jQuery代码:

HTML代码:

与show()和hide()方法一样,toggle()方法也可以接受两个参数,制作成动画的效果;

jQuery代码:

HTML代码:

使用fadeIn()和fadeOut()方法

fadeIn(duration,[callback]) 渐显(颜色增强)

fadeOut(duration,[callback]) 渐隐(颜色褪色)

其中参数duration和callback与slow()、hide()中的完全相同;

制作渐渐褪色的动画效果:

jQuery代码:

HTML代码:

使用fadeTo()方法自定义变幻目标透明度;

jQuery代码:

fadeTo(duration,opacity,callback)方法,能够让开发者自定义变幻的目标透明度.其中opacity的取值范围为0.0~1.0

HTML代码:

当使用fadeOut()方法时,图片完全消失后将不在占用<p>的空间,

而使用fadeTo(1000,0)时,虽然图片也完全不显示,但仍然占用着标记<p>的空间

幻灯片效果

slideUp()和slideDown()来模拟PPT中的类似幻灯片拉窗帘的特效

slideUp(duration,[callback]) 上滑(消失)

slideDown(duration,[callback]) 下滑(显示)

jQuery代码:

HTML代码:

停止所有在指定元素上正在运行的动画。

stop([clearQueue],[jumpToEnd])

clearQueue:如果设置成true, 则清空队列。可以立即结束动画。

gotoEnd:让当前正在执行的动画立即完成, 并且重设show和hide的原始样式, 调用回调函数等。

点击Go之后开始动画,点Stop之后会在当前位置停下来

HTML 代码:

jQuery 代码:

实例:阻止动画播放

delay(duration,[queueName])

设置一个延时来推迟执行队列中之后的项目。

总结:

1、基本效果

show():将隐藏的元素显示

show(speed,[callback]) :以动画的效果显示

hide():将显示的元素隐藏

hide(speed,[callback]) :以动画的效果隐藏

toggle():显示或者隐藏

toggle(switch) :如果参数为true则表示只显示, 反之如果参数为false则表示只隐藏

toggle(speed,[callback]):以动画的方式显示或者是隐藏

参数说明:

speed:速度 单位为毫秒

\”slow\”, 缓慢

\”normal\”, 正常

\”fast\” 快速

callback:回调函数 当动画执行完毕以后再来执行的函数

2、滑动效果

slideDown():将隐藏的元素显示

slideDown(speed,[callback]) :以动画的方式显示

slideUp():将显示的元素隐藏

slideUp(speed,[callback]) :以动画的方式隐藏

slideToggle():隐藏或显示

slideToggle(speed,[callback]):以动画的方式隐藏或者显示

参数说明:

speed:速度 单位为毫秒

\”slow\”, 缓慢

\”normal\”, 正常

\”fast\” 快速

callback:回调函数 当动画执行完毕以后再来执行的函数

3、淡入淡出

fadeIn():淡入

fadeIn(speed,[callback]) :以动画的方式进行淡入

fadeOut():淡出

fadeOut(speed,[callback]):以动画的方式进行淡出

fadeTo(speed,opacity,[callback]) :淡入淡出到指定值

opacity:透明度 取值:0-1之间 0表示完全透明 1表示不透明

callback:回调函数 当动画执行完毕以后再来执行的函数

show() 显示元素 hide()隐藏元素 toggle()显示和隐藏切换

fadeIn() 渐显(颜色增强) fadeOut()渐隐(颜色褪色) fadeTo() 自定义变换目标透明度 fadeToggle() 淡入和淡出切换

slideUp() 幻灯片上滑(消失) slideDown() 幻灯片下滑(显示) slideToggle() 幻灯片上滑和下滑切换

4 停止所有在指定元素上正在运行的动画。

stop([clearQueue],[jumpToEnd])

clearQueue:如果设置成true, 则清空队列。可以立即结束动画。

gotoEnd:让当前正在执行的动画立即完成, 并且重设show和hide的原始样式, 调用回调函数等。

JQuery为什么会被淘汰?

前端的同学会发现,除了一些老项目外,现在基本没有新的前端项目使用JQuery了。因此,我们不得不接受一个现实,那就是曾经风光无限的JQuery,即将要被历史淘汰了。

JQuery

为什么那么受人们欢迎的JQuery就要面临被淘汰的命运呢?今天我们就来全面分析一下背后的原因。

一、JQuery的优势

首先,我们来分析一下JQuery的优点,了解一下他在当时为什么会受欢迎。

1.强大的DOM操作

JQuery提供了非常完善的DOM操作API,DOM节点的增、删、改、查,节点的样式更新,还是事件的交互处理 ,使用起来都非常方便。另外,提供了各种节点选择器,可以进行节点的批量操作,非常高效。

2.JQuery AJAX

AJAX的出现,对前端来说绝对是个革命性的变化,使得浏览器可以跟服务端异步请求,实现页面的局部刷新。JQuery提供的AJAX接口,使用起来极其简单、方便。在使用简单的基础上,还提供了各种配置、回调函数等,又保证了其功能的强大性,无论是POST、GET、同步、异步,还是文件上传,能满足各种场景。

3.领先时代的动画

JQuery的动画特效,能让页面做出非常酷炫的效果,使得页面效果更加生动活泼,这在当时是非常领先的。

4.丰富的插件

JQuery还支持插件的扩展,在标准的JQuery上,添加自己的插件功能。这就让当时的互联网上,出现了很多好用的JQuery插件,直接通过拿来主义就能使用。

从以上分析看,JQuery在当时,甚至是现在来说,都是非常优秀的。因此,JQuery的淘汰,不是因为你不够优秀,而是因为时代不再需要你了,是不是有点像当年柯达胶卷被时代抛弃的悲情。

二、为什么会被淘汰

接下来,我们来具体分析被淘汰的原因,总体来说,新技术的更新换代,JQuery在新一代技术的降维打击之下,不得不面临被淘汰。

1.优势被超越

首先,JQuery的DOM操作优势,现在的新技术换了一个不同的赛道跟JQuery竞争,现在都是通过模板语法、数据绑定、虚拟DOM等技术,进行页面UI的更新,更加方便、高效,也就是说,我们不再需要手动进行DOM操作了。

其次,对于JQuery AJAX,目前已经要被axios等取代,axios不仅同样强大、好用,而且支持请求、响应拦截的处理,这是JQuery不具备的。

另外,JQuery的动画特效,在CSS3出现后,完全不占优势,CSS3更是支持硬件加速,性能体验更优,这在移动互联网上非常重要。

最后,说说JQuery插件,相对于各种插件的大杂烩,可能会面临各种兼容问题,现在前端则是整套完整、风格统一的组件库,如:ElementUI、有赞UI、京东UI等等,一个库能提供你所有常用的组件。

2.新的技术趋势

JQuery充其量只是一个组件库,只能满足前端开发某一方面、或某几方面的需要。

现在前端项目的复杂度,要求我们有一整套完整的解决方案,包括模板绑定、路由、状态、监听、过滤等等。在模块化、组件化、MVVM等编程思想下,出现了一大批架构级的优秀前端框架,如:vue、react、angular等,它们具备以上所说的全部能力。

另外,如此复杂的前端架构,又必须要有前端的工程化管理,这些框架能很好地配合nodejs、webpack等,实现架构搭建、开发、测试、发布(压缩、混淆、打包编译等),等全过程的自动化、工程化管理。

因此,在这些新技术趋势下,JQuery的生存空间已经很小了。

三、致敬JQuery

时代在进步,是时候跟JQuery说再见了,但无论如何,我们都需要对JQuery致以崇高的敬意,陪伴一代前端程序员走过青春。

致敬JQuery

当然,现在JQuery依然还在,希望3.6.0不是它的最后一个版本。

不知道大家对JQuery的看法如何呢,欢迎大家交流。

web前端Jquery学习笔记一

Jquery 是一款优秀的JavaScript框架,它是一个轻量的JS库,它兼容CSS3,还兼容各种浏览器(IE6.0+,火狐1.5+,谷歌,safari2.0+等),使用Jquery让web开发变得更简单,例如:文档操作、文档选择、制作动画、事件处理、AJAX的使用以及其他的功能。

JS框架就是对JS各种功能的封装和抽象,使我们在开发的时候具有简便性和更好的兼容性,并且可以扩展框架的内容。

Jquery 、 phototype、Mootools

YUI(yahoo user interface 雅虎的)

Kissy(淘宝自己的框架)

JX(腾讯自己的框架)

Tangram(百度自己的框架)

ExtJs(后台开发前端框架,全部都是AJAX操作,性能不是太好)

所谓的库就类似于一个工具箱,我们在做项目的时候需要用这些工具来完成我们要的前端效果。

所谓的框架就是别人已经封装好的效果我们直接拿过来使用即可。

使用库我们可以快速做出自己想要的效果。

框架具有选择性如果没有给我们封装那个效果我们同样要自己来写。

开源(源码开放)

轻量级,代码非常小巧

完善的学习资源,语法简练、语义易懂、学习快速、丰富文档

出色的浏览器兼容

出色的dom操作

插件丰富,除了 jQuery 自身带有的一些特效外,可以通过插件实现更多功能

官方网站:http://www.jquery.com

下载地址:http://www.jquery.com/download

下载后出现

文件后缀会出现min.js 这个是压缩版也是线上版,.js是开发版本

压缩版:没有空格,没有换行,没有文字说明

未压缩版:有空格,有换行,有简单的注释

如何选用版本呢?

1.0,1.2,1.3 …….2.0….3.0

区别在于兼容性:

2.0 以上版本不支持IE9以下的浏览器

1.0-1.9版本支持IE6,IE7,IE8

建议使用(1.7-1.9)版本

JS操作

语法:JS对象.style.CSS属性转化为JS后的名称=属性的值

JS设置背景色:

对象.BackgroundColor=’red’;

CSS设置背景色:

background-color: red;

缺点:

需要将CSS的写法转换成JS的写法

一次只能设置一个样式

Jquery操作

语法:

$().css(‘属性名’); //获取样式属性的值

$().css(‘属性名’,’属性值’);//设置样式的属性和值

$().css(json对象)//设置样式的多个属性

说明:json对象的键=>值(‘属性名’=>’属性值’)

例如:设置背景为红色,字符30px;

所谓选择器就是用来查找定位DOM元素的工具

获取和选择:

HTML中的标签元素

JS中的DOM节点

JS中的对象

简单选择器的对比

灵感来源于CSS选择器

语法:$(‘#ID名称’)

作用:选择页面指定ID的元素的名称,返回JQ对象

说明:说明相当于JS中的document.getElementsById();

案例:使用ID选择器将【who are you!】变成红色

【原生JS】

obj = document.getElementById(\’em1\’);

obj.style.color=\’red\’;

【Jquery】

$(\’#em1\’).css(\’color\’,\’red\’);

脚下留心:$is not defined

当我们看到$ is not defined 说明我们没有引入jquery操作库

语法:$(‘.类名’)

作用:选择页面指定类名称的元素,返回JQ对象

说明:相当于JS中document.getElementsByClassName

$(\’.em1\’).css({\’color\’:\’blue\’,\’font-size\’:\’30px\’});

语法:$(‘标签名称’);

作用:选定页面指定标签的名称

说明:相当于JS中的getElemetsTagName()

【HTML】

3.使用标签选择器将【<span>O!NO!</span>】变成<span>黄色</span>,

【JS】

$(\’span\’).css(\’color\’,\’red\’);

脚下留心:是将页面中所有的span标签字体颜色全部改变。

语法:$(*)

作用:选择页面所有的标签元素,返回JQ对象

//通配符选择器

$(\’*\’).css(\’color\’,\’blue\’);

语法:$(‘选择器1,选择器2,选择器3…’);

作用:选择页面同时指定多个标签元素,返回JQ对象

特点:

可以选择多个选择器,多个之间使用,号隔开

可以执行相同的操作

$(\’div,p\’).css(\’color\’,\’red\’);

语法:$(‘选择器1 选择器2 选择器..n’);

作用:选择指定父级元素下的所有子元素

特点:

给所有的子孙增加样式

多个选择器使用逗号分隔开来

//父亲下面的所有的子孙

$(\’#id1 span,#id2 span\’).css(\’color\’,\’blue\’);

语法:$(‘选择器1>选择器2’)

作用:选中父级下的儿子选择器

特点:选中父级下的儿子但是不包含孙子

$(\’#id1 > span\’).css(\’color\’,\’red\’);

思考:后代选择器和子元素选择器有什么区别?

后代选择器:会选中父级下的所有标签元素

子元素选择器:只会选中父级下的所有子元素

【+】紧邻同辈

语法:$(‘选择器1+选择器2’)

作用;选中指定对象的下一个兄弟元素

特点:

只是选择一个和其紧邻的下一个元素(紧邻同辈元素)

//选择紧挨p元素的下一个元素

$(\’#id3 p+span\’).css(\’color\’,\’red\’);

【~】相邻同辈

语法:$(‘选择器1~选择器2’)

作用:选中指定对象的下的所有兄弟元素

特点:

从对象下面开始找,所有指定的兄弟元素

//选择相邻p元素的下一个元素

$(\’#id4 p~span\’).css(\’color\’,\’red\’);

:input

语法:$(‘:input’)

作用:选中所有input select textarea button 表单元素

:text

语法:$(‘:text’)

作用:选中所有单行文本(<input type=’text’/>)

:password

语法:$(‘:password’);

作用:选中所有密码文本(<input type=’password’/>)

:radio

语法:$(‘:radio’);

作用:选中所有单选框 (<input type=’radio’/>)

:checkbox

语法:$(‘:checkbox’);

作用:选中所有复选框元素(<input type=’checkbox’/>)

:file

语法:$(‘:file’)

作用:选中所有文件域元素(<input type=’file’>)

:hidden

案例:

在表单元素中单选和复选框比较特殊,不能设置颜色,在实际项目中我们可以通过

div设置图片来代替单选和复选框

案例代码:

:checked

语法:$(‘:checked’)

作用:匹配所有选择的表单标签,一般用于匹配单选按钮和多选按钮

脚下留心:同时包含单选和多选按钮

:selected

语法:$(‘:selected’)

作用:匹配所有选中的的元素,一般用于匹配下拉列表

:disabled

语法:$(‘:disabled’)

作用:选中匹配表单中禁用的元素

:enabled

语法:$(‘:enabled’)

作用:选中匹配表单可用元素,和disabled相反

7.过滤-简单过滤/选中

:first

语法:$(‘选择器:first’);

作用:用于匹配选中元素集合中的第一个元素

:last

语法:$(‘:last’);

作用:匹配选中集合元素中的最后一个元素

脚下留心:

First和last 操作的是当前选择器集合下的元素(当前选中的所有标签)集合外的不会被选中

:even

语法:$(‘选择器:even’);

作用:用于匹配 元素集合中 索引为偶数的(说明:偶数从零开始)

:odd

语法:$(‘选择器:odd’);

作用:用于匹配指定元素集合中 索引为偶数的元素

小总结

even和odd他们的作用刚刚相反,在实际工作项目中我们用来区分列表的每行显示

:eq

语法:$(‘选择器:eq(index)’) ,index:索引从0开始

作用:匹配指定元素集合中的具体某一个元素

:gt

语法:$(‘选择器:gt(index)’)

作用:用于匹配指定集合中的元素索引值大于index的元素集合

:lt

语法:$(‘选择器:lt(index)’);

作用:和gt 的作用相反

脚下留心:

Gt(index)和lt(index) 过滤选择器 不包含当前选中的index元素

:not(selector)

语法:$(‘选择器:not(选择器1,选择器2)’)

作用:匹配指定元素集合 除了指定的元素

:header

语法:$(‘选择器:header’)

作用:匹配选中所有标题标签元素

:contains

语法:$(‘选择器:contains(内容)’)

作用: 匹配选中标签中是否存在指定内容

例如:

:has

语法:$(‘选择器1:has(标签名称)’)

作用:匹配指定选择器中的指定标签。

案例:

:empty

语法:$(‘选择器:empty’)

作用:匹配指定选择器内容为空的元素

说明:如果有子元素就不为空

:parent

语法:$(‘选择器:parent’)

作用:和empty相反,匹配指定选择器内容不为空的元素

包含属性[attribute]

语法:$(‘选择器[属性名称]’)

作用:匹配选择器,有该属性的元素(标签)

包含值[attribute*=value]

语法:$(‘选择器[属性名称*=属性值]’)

作用:用于匹配选中选择器中 属性名 含有 属性值的元素

等值[attribute=value]

语法:$(‘选择器[属性名称=属性值]’)

作用:用于匹配选中选择器中 属性名 等于 属性值的元素

不等值[attribute!=value]

语法:$(‘选择器[属性名!=属性值]’)

作用:用于匹配选中选择器中的元素 属性名 不等于 属性值的元素

值开头[attribute^=value]

语法:$(‘选择器[属性名^=属性值]’)

作用:用于匹配选中的元素 属性名 开头为 指定元素属性值的元素

值结尾[attribute$=value]

语法:$(‘选择器[属性名$=属性值]’)

作用:用于匹配选中的元素 属性名 结尾为 指定元素属性值的元素

案例代码:

和简单并且选择器做比较

第一个子:first-child

语法:$(‘选择器:first-child’)

作用:匹配指定父元素的第一个子元素

最后一个子:last-child

语法:$(‘选择器:last-child’)

作用:匹配指定父元素下的最后一个子元素

指定子:nth-child(index/even/odd)

语法:$(‘选择器:nth-child(index)’)

作用:匹配指定父元素的 指定索引元素或索引为奇数或索引为偶数的元素

说明:

Index:代表索引,索引的值从(1)开始,要和eq区分开来

Even:代表偶数

Odd:代表奇数

唯一子:only-child

语法:$(‘选择器:only-child’)

作用:如果当前元素为父元素的唯一元素则匹配

:hidden

语法:$(‘选择器:hidden’)

作用:匹配不可见元素

:visible

语法:$(‘选择器:visible’)

作用:匹配可见元素

选择器:hidden 之间是没有空格的

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。