jQuery笔记(四)jQuery中的动画
jQuery最吸引人的地方莫过于能做出绚丽的动画了,也是能极大提高用户体验的地方,这次我们就来一探jQuery中的动画!
一. show()方法和hide()方法
show()方法与hide()方法是jQuery中最基本的动画方法,hide()方法设置是将所匹配的元素的样式display甚至为none。使用方法也很简单。
$("element").show(); //将元素element显示$("element").hide(); //将元素element隐藏$("element").css("display","none"); //将元素element隐藏,hide()方法效果一致。
二. fadeIn()方法和fadeOut()方法
fadeIn()、fadeOut()与show()、hide()的差别就在与它们只改变其透明度,简单而言,其效果就是要实现淡进、淡出的效果。该方法的具体使用情况参考上例。
三.slideUp()和slideDown()方法
slideUp()和slideDown()方法与show()、hide()方法的差别就在于其改变的是元素的高度,使元素由上而下的展示,就仿佛拉开上下式的那种窗帘的感觉一样!我们还是来看一个具体的实例。
<script type="text/javascript">//toggle()被弃之后的替代方法var i=0;$(function () {$("h5.head").click(function () {if(i==0){$(this).next().slideDown(2000); //在2秒内完成展示i=1;}else{$(this).next().slideUp(2000); //在2秒内完成收缩i=0;}})})</script><div id="panel"><h5 class="head">怎么样?</h5><div class="content">还不错哦。<br /><p>还好</p><p>还行</p><p>还可以</p></div></div>

另外我们还可以在参数里面通过具体的数字来设置快慢程度,或者使用”slow”、”normal”、”fast”来控制速度。
四. 自定义动画方法 animate()
事实上,上面介绍的动画远远不能满足于我们的需求,很多时候,我们必须自定义我们的动画,下面就来说说自定义的动画。自定义动画是通过方法animate()方法来实现的。其语法结构为:animate(params,speed,callback);第一个包含央视属性及值的映射。第二个参数speed是表示速度的参数,为可选参数。第三个参数是指在动画完成之后执行的函数,也是可选参数。下面我们以一个具体的例子来说明。我们做一个动画效果。先看HTML代码。
<style type="text/css">#panel{position:relative;width:100px;height:100px;border:1px solid #0050D0;background:#111D1F;cursor:pointer;}</style><body><div id="panel"></div></body>
即为一个正方形的div区域,如图2所示。
我们的目标就是要是这个正方形区域动起来,使其动起来!其目标效果是:先使其向右移动,然后在向右移动的时候,我们使其高度也同时增加,当向右移动到一定程度的时候,我们再试其向下移动,并使宽度增加,最后移动到目标位置后,在另图形消失!具体jQuery代码如下:
<script type="text/javascript">$(function () { //加载DOM$("#panel").css("opacity", "0.5"); //先设置div区域的不透明度$("#panel").click(function () {$(this).animate({ left: "400px", height: "200px", opacity: "1" }, 3000) //令<div>区域在3秒内向右移动,移动的过程中使高度调至为200px.animate({ top: "200px", width: "200px" }, 3000) //令<div>区域在3秒内向下移动,并使宽度调至为200px.fadeOut(); //令其逐渐淡出});});</script>
你也可以动手试试其效果!
五. toggle().slideToggle(),fadeTo(),fadeToggle()方法
toggle()用来切换元素的可见状态。如果元素可见,则转换为隐藏,如果元素是隐藏的,则切换为隐藏的,如果元素是隐藏的,则切换为可见的。
我们看下述代码。
$("#element").click(function{$(this).toggle();});
其效果与下述代码是一样的。
$("#element").toggle(function(){$(this).hide();},function(){$(this).show();});
换句话说,toggle()就是用于替代hide(),show()的综合效果的,正如jQuery所倡导的那句话:Do more,Write less!
说完了toggle(),我们再来看看slideToggle(),其是通过高度变化来切换匹配元素的可见性。我相信您也一定知道这个方法的出现是用来代替哪两个方法的组合的了?正是slideUp与slideDown。
fadeTo()方法可以把匹配元素的不透明度以渐进的方式调整到指定的值。
哪fadeToggle()呢?一句话你就明白:它的出现是为了代替fadeIn与fadeOut()的组合效果!
六. jQuery中的动画的各个方法总结比较
说了那么多方法,估计大家都迷糊了,下面列个表格进行比较一番,以区分他们的区别。同时,也便于大家在忘了动画中的一些方法时,可以快速查询。见表1。
|
方法名 |
说明 |
| show()和hide() | 同时修改匹配元素的高度、宽度和不透明度 |
| fadeIn()和fadeOut() | 只改变不透明度 |
| slideUp()和slideDown() | 只改变高度 |
| fadeTo() | 只改变不透明度 |
| toogle() | 用来代替show()和hide(),所以能够同时修改匹配元素的高度、宽度和不透明度 |
| slideToggle() | 用来代替slideUp()方法和slideDown()方法,只修改高度 |
| fadeToggle() | 用来代替fadeIn()方法和fadeOut()方法,只修改不透明度 |
| animate() | 自定义方法,具体介绍见第四节,事实上,以上方法都是调用animate()方法 |
七. 动画示例效果
<div class="v_show"><div class="v_caption"><h2 class="cartoon" title="卡通动漫">卡通动漫</h2><div class="highlight_tip"><span class="current">1</span><span>2</span><span>3</span><span>4</span></div><div class="change_btn"><span class="prev">上一页</span> <span class="next">下一页</span></div><em><a href="#">更多>></a></em></div><div class="v_content"><div class="v_content_list"><ul><li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li><li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li><li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li><li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li><li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li><li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li><li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li><li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li><li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li></ul></div></div></div>
然后为其添加好css样式,最终呈现的效果如图3所示
由于我们重点来说的是jQuery,所以对于css样式以及整个网页提供附件,就不详细说css了。那好,我们的工作就正式开始了,需要为其添加jQuery代码,所达到的效果就是通过点击卡通动漫旁的左右按钮来切换图片。
首先,我们来分析下流程。我们总共是16张图片,因为加css样式的原因所以现在只显示了4张图片,我们暂且把显示出来的四张图片成为一个版面,即海贼王的四张图片,还有四张哆啦A梦,四张火影忍者,四张龙珠的照片需要我们滚动显示,即每按一次图3中红圈圈出来的按钮,图片就会自动切换,比如按向右的按钮就会自动切换到四张哆啦A梦上,总共是16张图片,我们需要滑动4次,也就是说滑动4个版面。
分析到这里,那么大家就应该明白jQuery代码在大体方面包含两个方面,一个是点击向右箭头的click事件,使其版面自动向右滑动,另一个就是点击向左箭头的click事件。我们在这里详细说下点击向右箭头的click事件。在滑动的时候我们实现的动画方法采用的是animate();通过设置其left属性来控制。
再次,图3中还有一部分需要我们去处理,那就是“卡通动漫”这四个字旁边的小圆点,当前版面的圆点会显示为高亮,也就是会显示为蓝色。那么,也就是指在我们点击箭头的时候,圆点也会同时移动,比如点击右箭头,第二个圆点就会高亮,同时也会去除第一个圆点的高亮效果,这是通过addClass()方法来添加一个“current”样式,已在css代码中写好了。
分析到了这里,那么我们就具体看看代码吧。此处只列出向右的箭头的click代码。
<script type="text/javascript">var page = 1; //当前版面为第一个版面var i = 4; //每版放四个图片var len = $("ul li").length; //总的图片数目var page_Count = Math.ceil(len / i); //用天花板函数取得总共的版面数var v_width = $(".v_content").width(); //获取id=v_contend的<div>区域的宽度,次宽度即为下一个版式滑动的宽度//设置鼠标点击下一页按钮,版面就会自动滑动$("span.next").click(function () { //绑定click事件if (!$(".v_content_list").is(":animated")) { //判断当前动画是否正在进行if (page == page_Count) //当前版面为最后一个版面,此时再外下滑,应该滑回第一个版面{$(".v_content_list").animate({ left: "0px" }, "normal");page = 1;}else { //滑动到下一版面$(".v_content_list").animate({ left: "-=" + v_width }, "normal");page++;}//为当前版面的圆点添加"current"样式,并去除其他版面的"current"样式,即完成分析中的第三步$("div.highlight_tip").find("span").eq((page - 1)).addClass("current").siblings().removeClass("current");}});</script>
好了,这个Deomo就分析到这里,具体的代码我打包到附件中,大家可以下载查看。jQuery中最绚丽的部分恐怕就是实现动画效果了,其实,很多复杂的动画也是由简单的动画叠加而成,而且jQuery实现动画的方式很简洁(相对javascript而言),尤其是很多代码都可以通过链式操作的方式进行书写,比如这个Deomo中我们实现圆点样式的改变就是通过链式操作,jQuery中的动画就写到这里。
转自:http://www.cnblogs.com/yanfengfree/p/3534399.html 并对文中实例稍作修改
jQuery笔记(四)jQuery中的动画的更多相关文章
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- JQuery笔记:JQuery和JavaScript的联系与区别
来源:http://www.ido321.com/1019.html ps:LZ觉得这个标题有点大了,超出了能力范围,不喜勿碰.目前只记录LZ能力范围内的,日后持续补充. 一.JQuery对象和DOM ...
- jQuery笔记之animate中的queue
队列 队列的执行顺序 queue() dequeue() 输出对象里面的内容 依次出队 不过这样写太麻烦了,因为每次都要输出,所以我们看下面的方法 运用到队列输出的 <!DOCTYPE html ...
- Android笔记(六十四) android中的动画——补间动画(tweened animation)
补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐. 补间动画由一下四种方式: 1.AplhaAnimation——透明度动画效果 2.ScaleAnimation ——缩放动画效 ...
- Jquery笔记和ajax笔记
Jquery笔记:jQuery是一个JavaScript函数库,专为事件处理设计 1.jQuery的引入 <script text="type/javascript" src ...
- jQuery学习笔记(四)jQuery中的动画
目录 show()方法和hide()方法 fideIn()方法和fadeOut()方法 slideUp方法和slideDown()方法 自定义动画方法animate toogle(),slideTog ...
- 【学习笔记】jQuery中的动画与效果
1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback]) 返回值: ...
- 前端笔记之jQuery(上)加载函数的区别&对象&操作HTML/CSS&动画&选择器
一.jQuery简介 1.0 JavaScript编程比较恶心的地方 恶心1:选择元素麻烦,全线兼容的方法只有getElementById()和getElementsByTagName()两个.其他的 ...
- (九)jQuery中的动画(载)
原文链接:http://blog.csdn.net/zfy865628361/article/details/50358367 首先,用jQuery做动画效果要求在标准模式下,否则可能会引起动画抖动. ...
随机推荐
- 2019牛客多校2 F Partition problem(dfs)
题意: n<=28个人,分成人数相同的两组,给你2*n*2*n的矩阵,如果(i,j)在不同的组里,竞争力增加v[i][j],问你怎么分配竞争力最 4s 思路: 枚举C(28,14)的状态,更新答 ...
- for和while——python中的循环控制语句详解
循环语句在绝大多数的语言中,都是必不可少的一种控制语句,循环语句允许我们执行一个语句或语句组多次.在python中有for循环和while循环两种,讲到这里,就不得不提到我们的迭代器对象 迭代器 迭代 ...
- Spark作业执行流程源码解析
目录 相关概念 概述 源码解析 作业提交 划分&提交调度阶段 提交任务 执行任务 结果处理 Reference 本文梳理一下Spark作业执行的流程. Spark作业和任务调度系统是其核心,通 ...
- Python json格式处理
Python json格式处理 首先放一段代码 import requests import jsonpath import json f=open('ip.txt','r',encoding='ut ...
- 【转载】linux操作系统与应用程序的main函数
来源:https://blog.csdn.net/h542723151/article/details/52154871 这几天一直在纠结: main函数是程序的入口,一个程序启动后,经过bootlo ...
- leetcode--js--Two Sum
问题描述: 给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = ...
- c语言心形告白代码实现
c语言心形告白代码实现 1.彩色告白 include<stdio.h> include<math.h> include<windows.h> include< ...
- Javascript 基础学习(五)js 的运算符
通过运算符可以对一个或多个值进行运算,并且一定有运算结果返回 算数运算符 算数运算符包括相加(+).相减(-).相乘(*).相除(/).取模(%).任何值与字符串相加都会转换为字符串,做的是字符串 ...
- Linux kernel简介
内核体系设计分:单内核,微内核 windows是微内核设计. Linux是单内核设计,但充分借鉴了为微内核体系的优点,为内核引入了模块化机制. 内核的组成部分 kernel:内核核心,一般为bz压缩的 ...
- Linux 任务计划,周期性任务执行
未来的某个时间点执行一次某任务的命令:at,batch 命令执行的结果,会发送到任务发起者的邮箱 周期性运行某任务:crontab 命令执行的结果,会发送到任务发起者的邮箱 本地邮件服务 发邮件的协议 ...