jQuery动画效果、jQuery插件使用
一、事件的绑定与解绑
1.1 jQuery的简单绑定
1.1.1 on(events,fn)事件(新版本使用)
为指定的元素添加一个或多个事件处理程序,并规定当这个事件发生时运行的函数。on()方法适用于当前或未来的元素,如用脚本创建的新元素。
参数说明:
- events 一个或多个用空格分隔的事件类型
- fn 该事件被触发时执行的函数
- eg:
<div id="box">hello world!</div> <script src="js/jquery.js"></script> <script> $("#box").on("click",functiong(){ // js 原生 alert(this.innerText); // jQuery alert($(this).text()); }); </script>
jQuery 的其他事件如下:
1.1.2 on (events,{data},fn)事件
参数说明:
- events: 一个或多个用空格分隔的事件类型
- data: 需要传递的参数,作为event.data的属性值
- fn: 该事件被触发时执行的函数。
<div id="box" style="width:100px;height:100px;border:1px solid red"></div> <script src="js/jquery.js"></script> <script> $("#box").on("mouseover",{ "fruit":"banana", "play":"run" },function(event){ $(this).text(event.data.fruit); });
1.1.3 bind(events ,fn)事件
为指定的元素添加一个或多个事件处理程序,并规定当这个事件发生时运行的函数。bind()方法适用于当前或未来的元素,如用脚本创建的新元素
参数说明:
- events: 一个或多个用空格分隔的事件类型
- fn: 该事件被触发时执行的函数。
eg:
<div>从前从前</div> <script src='js/jquery.js'></script> <script> $("div").bind("mousemove",function(){ console.log($(this).text()); }); </script>
1.1.4 bind(events,{data},fn)事件
针对已经存在的元素进行事件的设置
- events: 指定绑定的事件名称,多个参数用空格隔开
- data: 作为event.data属性值传递给事件对象的额外数据对象
- fn: 回调函数(事件处理函数)
<button>点击</button> <script src='js/jquery.js'></script> <script> $("button").bind("click",{ "info":"因为爱所以爱" },function(event){ alert(event.data.info); }); </script>
bind 支持的事件名称
blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error
1.2 jQuery多事件绑定
使用mouseover、mouseout作为案例;(mouseenter mouseleave)
1.2.1 直接事件的绑定
<button>移动/离开</button> <script src='js/jquery.js'></script> <script> // 链式编程 $("button").mousemove(function(){ console.log("我来了!"); }).mouseout(function(){ console.log("我离开了!"); }); </script>
1.2.2 on 多事件绑定
<button>移动/点击</button> <script src='js/jquery.js'></script> <script> $("button").on("mouseover click",function(){ console.log("123"); }); </script>
1.2.3 on 给不同的事件绑定不同的函数
<button>放上/点击/离开</button> <script src='js/jquery.js'></script> <script> $("button").on({ mouseover:function(){ console.log("I"); }, click:function(){ console.log("LOVE"); }, mouseout:function(){ console.log("YOU"); } }); </script>
1.3 jQuery事件解绑
Off(events, selector, fn)
- events: 想要移除的事件名称
- selector: 移除那一个DOM节点的事件(必须和传入的DOM节点一致)
- fn: 想要移除的绑定函数
事件解绑分为以下几种情况:
- $(selector).unbind(); 移除所有的事件,看下面的例子:
<button>放上/点击/离开</button> <script src='js/jquery.js'></script> <script> $("button").on({ mouseover:function(){ console.log("I"); }, click:function(){ console.log("LOVE"); }, mouseout:function(){ console.log("YOU"); } }); // 移除button元素的所有事件包括事件函数 $("button").unbind();
- $(selector).unbind("mouseover mouseout");//移除指定的事件
<button>放上/点击/离开</button> <script src='js/jquery.js'></script> <script> $("button").on({ mouseover:function(){ console.log("I"); }, click:function(){ console.log("LOVE"); }, mouseout:function(){ console.log("YOU"); } }); // 移除button元素的点击事件 $("button").unbind("click");
- $(selector).off(); // 移除所有 这个和上面的bind一样,这里就不在举例子了
- $(selector).off('click'); // 移除点击事件(而不会移除其他的事件),这里也不举例子了
- $(“body”).off(events,selector,fn); // 移除事件,同时会移除函数
eg:
function change(){ console.log("I LOVE YOU") } $("body").on("mouseover click mouseout","button",change); $("body").off("mouseover","button",change);
二、jQuery模拟事件
- 语法:trigger(type,data)
- 解释一:type: 指定要模拟的事件名称
- 解释二:data: 传递给事件处理函数的附加参数
<!-- 模拟事件 --> <div>点击</div> <script src='js/jquery.js'></script> <script> $("div").on("click",function(){ console.log("hello"); }).trigger("click"); </script>// 默认让该函数输出一次,是模拟的结果,然后点击数时在触发一次
三、动画显示与隐藏
3.1 show([speed,[easing],[fn]])
- 语法:显示隐藏的匹配元素
- 解释一:speed: "slow", "normal"(400), or "fast"或毫秒数值(如:1000)
- 解释二:easing: 默认是"swing"变加速运动,参数"linear"匀速运动
- 解释三:fn: 在动画完成时执行的函数,每个元素执行一次
<p hidden>爱你哟!</p> <script src='js/jquery.js'></script> <script> $("p").show(1000,"linear",function(){ $(this).css({ "fontSize":24, "fontWeight":"bold", "color":"orange" }); }); </script>
3.2 hide([speed,[easing],[fn])
- 语法:隐藏显示的元素
- 解释一:speed: "slow", "normal", or "fast"或毫秒数值(如:1000)
- 解释二:easing: 默认是"swing"变加速运动,参数"linear"匀速运动
- 解释三:fn: 在动画完成时执行的函数,每个元素执行一次
<p>爱你哟!</p> <script src='js/jquery.js'></script> <script> $("p").hide(1000,"linear",function(){ $(this).css({ "fontSize":24, "fontWeight":"bold", "color":"orange" }); }); </script>
3.3 toggle([speed],[easing], [callback])
- 语法:在被选元素上进行 hide() 和 show() 之间的切换
注意: 这里的例子就不举了,很简单,一句话:显示的时候让他消失,隐藏的时候让他结束
3.4 slideDown([speed],[easing],[fn])
- 用法:向下展开动态显示元素
3.5 slideUp([speed,[easing],[fn]])
- 用法:向上展开动态显示元素
以上两种合例:
<button id="btn1">折叠</button> <button id="btn2">伸展</button> <div></div> <script src='js/jquery.js'></script> <script> $("#btn1").click(function(){ $("div").slideUp() }); $("#btn2").click(function(){ $("div").slideDown() }); </script>
3.6 fadeIn([speed],[easing], [callback])
- 语法:淡入(隐藏)
3.7 fadeOut([speed],[easing], [callback])
- 语法: 淡出(显示)
以上两个合例:
<button id="btn1">淡入</button> <button id="btn2">淡出</button> <div></div> <script src='js/jquery.js'></script> <script> $("#btn1").click(function(){ $("div").fadeIn(3000); }); $("#btn2").click(function(){ $("div").fadeOut(3000); }); </script>
3.8 fodeTo(speed,opcity,fn)
- 语法:将被选元素的不透明度逐渐地改变为指定的值
- opcity:必需。规定要淡入或淡出的透明度。必须是介于 0.00 与 1.00 之间的数字
3.9 其他函数
fadeToggle和slideToggle
解释一下就行了:很简单,意思就是 有则显示没有,没有则有
四、自定义动画
4.1 animate(properties,[duration],[easing],[callback])
参数解释
- properties: 设置相关动画需要的CSS的属性内容
- duration: 设置自定义动画执行的时长(毫秒)
- easing: 默认jQuery提供"linear" 和 "swing
- callback: 自定义动画执行完毕后的回调函数
<button>点击</button> <div style="width:50px;height:50px;background:red;"></div> <script src='js/jquery.js'></script> <script> $("button").click(function(){ start(); function start(){ $("div").animate({height:"500px"},2000,"linear"); $("div").animate({width:"500px"},2000,"linear"); $("div").animate({height:"50px"},2000,"linear"); $("div").animate({width:"50px"},2000,"linear",start); } }); </script>
4.2 animate(properties,options)
参数解释
- properties: 设置相关动画需要的CSS的属性内容
- options包括以下属性
duration - 设置自定义动画执行的时长(毫秒)
easing - 默认jQuery提供"linear" 和 "swing".
complete - 自定义动画执行完毕后的回调函数
queue - Boolean值,(默认值: true) 设定为false将使此动画不进入动画队列,会立刻执行
eg:
<button>点击</button> <div style="width:50px;height:50px;background:red;position: relative;"></div> <script src='js/jquery.js'></script> <script> $("button").click(function(){ start(); function start(){ $("div").animate({width:"200px",height:"200px"},{ duration:3000 }).animate({left:500},{duration:3000,queue:true}).animate({left:0,width:50,height:50},{duration:3000,queue:true,start}) } }); </script>
五、jQuery常见插件的使用
5.1 .data()跟.attr() 方法的区别
- 获取数据的时候,attr方法需要传入参数,data方法可以不传入参数,这时候获取到的是一个js对象,即使没有任何data属性
- 获取到的数据类型不同,attr方法获取到的数据类型是字符串(String),data方法获取到的是相应的类型。
- data方法获取到数据之后,我们使用一个对象来接收它,那么就可以直接操作(设置值或获取值)这个对象,而attr方法不可以
- data-attribute属性会在页面初始化的时候放到jQuery对象,被缓存起来,而attr方法不会
5.2 全局jQuery对象扩展方法
<input type="text" name="" value=""> <script src='js/jquery.js'></script> <script> $.log = function(){ setInterval(function(){ //获取秒数保存在input中 $("input").val(new Date().getSeconds()); },1000) } $.log(); </script>
5.3 普通jQuery DOM原型对象扩展方法
<input type="text" name="" value=""> <script src='js/jquery.js'></script> <script> $.fn.log = function(){ setInterval(function(){ // 获取1976年到现在的毫秒数 $("input").val(new Date().getTime()); },1000) } $.fn.log(); </script>
5.4 第三方插件( laydate 插件 )
layDate 日期与时间组件
- 官网:http://laydate.layui.com/
- 如何使用laydate插件
下载解压。
将laydate整个文件放至项目的任意目录 ( 不要移动其文件结构,它们具有完整的依赖体系 )。
只需在页面引入laydate.js即可
<!-- 引用laydate的插件 --> <script src='laydate/laydate.js'></script> <input type="text" name="" value=""> <script> laydate.render({ // 指定元素 elem: 'input' ,type: 'year'// 年选择 }); </script>
注意:还有其他的功能,这里小编就不一一写了,关键时太多了,要是你有用到这个东西,就去官网上进行查看
5.5 第三方插件( jQuery.lazyload.js )
Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的。在包含很多大图片长页面中延迟加载图片可以加快页面加载速度,浏览器将会在加载可见图片之后即进入就绪状态,在某些情况下还可以帮助降低服务器负担.
- 官网地址:http://www.jq22.com/jquery-in...
- 这些东西小编真的讲不通,只有通过官网自己去看,还有真的是太多了
5.6 第三方插件( masonry )瀑布流
- 官网: http://masonry.desandro.com/
- Masonry是 一款非常强大的jQuery动态网格布局插件,可以帮助开 发人员快速开发瀑布流效果。很多网站都有使用这样的布局,比如:淘 宝的哇哦、花瓣网、蘑菇街
- 具体用法:找官网
5.7 第三方插件(Swiper)
- 官网地址:https://www.swiper.com.cn/
- 引入swiper.css
<link rel="stylesheet" href="lib/Swiper-3.3.1/dist/css/swiper.min.css">
<script type="text/javascript" src="lib/jquery-1.11.3.js"></script>.
- 引入swiper.jquery.min.js
<script type="text/javascript" src="lib/Swiper-3.3.1/dist/js/swiper.jquery.min.js"></script>
- 具体用法:见官方
5.8 unslider(轮播插件)
小编懒语:这些插件并不是一时半会就学会的,如果你需要那个就去官方网站上进行查找,里面有压缩包,还有具体的用法
5.9 echarts
官方地址:http://echarts.baidu.com/
5.10 highcharts
5.11 插件封装模板
<script> ;(function($) { $.fn.table = function(options) { // 默认参数 var defaultOptions = { } // 将两个对象合并成一个对象 var endOptions = $.extend(defaultOptions, options) $(this).each(function() { }) return $(this); } })(jQuery); </script>
5.12 fullpage插件
官网:http://www.jq22.com/jquery-in...
六、总结
小编写的这节内容有水的部分,比如 插件,其实插件这部分需要自己去摸索,自己去官网查看,我只是列举了几个重要的插件,如果你有需要,就认真一点去官网上看看,或者自己写一个让小编我see see!