插件:jquery不可能包含所有的功能,我们可以通过插件扩展jquery的功能。 jQuery有着丰富的插件,使用这些插件能给jQuery提供一些额外的功能。 常用网站:jquery之家 jquery插件库 github 站长之家
- 颜色渐变插件
- 弹出层插件 layer
- 图片懒加载插件
- 动画插件 Easing.js
- 抽奖插件
- 放大镜插件
- 手风琴插件
- 侧边栏插件
- jQueryUI:常用的2-3个功能演示
- 360度旋转插件
- 视差滚动插件
一、颜色渐变
animate不支持颜色的渐变,但是使用了jquery.color.js后,就可以支持颜色的渐变了。
//使用插件的步骤1. 引入jQuery文件2. 引入插件(如果有用到css的话,需要引入css)3. 使用插件jQuery("#go").click(function(){jQuery("#block").animate({backgroundColor: "#abcdef"}, 1500 );});
二、弹出层插件layer
三、图片懒加载
懒加载插件 (当图片随着滚动条滚动将要显示的时候才去加载图片)
//1. 引入jQuery文件//2. 引入插件(如果有用到css的话,需要引入css)//3. 使用插件<!--引入插件--><script src="jquery.js" type="text/javascript"></script><script src="jquery.lazyload.js" type="text/javascript"></script><!--html标签--><img class="lazy" data-original="img/example.jpg" width="640" height="480"><!--js代码-->$("img.lazy").lazyload();
四、jquery Easing.js 插件
介绍:easing是jquery的一个插件,使用它可以创建更加绚丽的动画效果。
环境:因为easing是jQuery的插件,所以必须是在引入jquery之后再引入它
//animate 四个参数//1.动画属性:格式为json//2.duration:持续时间//3.过渡效果:过渡效果//4.complete:成功后的回调函数$(".car").animate({"left": "150%"}, 4000, "easeInElastic", function(){});//注意点:car需要添加定位
//也可以这样写$(".car").animate({height:500,width:600},{easing: 'easeInOutQuad',duration: 500,complete: function(){}});
五、 jquery.ui.js插件
jQueryUI专指由jQuery官方维护的UI方向的插件。现在用的不多,主要用bootstrap。
官方API:http://api.jqueryui.com/category/all/
其他教程:jQueryUI教程
//基本使用:1.引入jQuery2.引入jQueryUI的样式文件3.引入jQueryUI的js文件4.使用jQueryUI功能根据f12找到对应的页面元素,复制代码到当前html文件中复制对应的css和js文件代码(打开网页source源码,根据id查找对应的代码复制黏贴)
六、360度3D 旋转插件
##1. 引用js文件包<script src="js/jquery.min.js"></script><script src="js/circlr.min.js"></script>##2. 书写结构:<div class="container"><div id="circlr"><img data-src="picture/1.png" /><img data-src="picture/2.png" /><img data-src="picture/3.png" />...<div id="loader"></div></div></div>//注意 自定义属性 data-src 里面写路径//loader 是加载图片##3. css样式#circlr {cursor: move;margin: 0 auto;min-height: 100px;position: relative;}#circlr #loader {background: url(../images/loader.gif) center center no-repeat;bottom: 0;display: none;left: 0;position: absolute;right: 0;top: 0;}##4. 调用文件对象<script type="text/javascript">var crl = circlr('circlr', {scroll : true,loader : 'loader'});</script>
七、视差滚动插件
视差滚动(Parallax Scrolling)指网页滚动过程中,多层次的元素进行不同程度的移动,视觉上形成立体运动效果的网页展示技术
主要核心就是前景和背景以不同的速度移动,从而创造出3D效果。 这种效果可以给网站一个很好的补充
7-1 特性
视差滚动效果酷炫,适合于个性展示的场合。视差滚动徐徐展开,适合于娓娓道来,讲故事的场合。视差滚动容易迷航,需要具备较强的导航功能。
7-2 原理
传统的网页的文字、图片、背景都是一起按照相同方向相同速度滚动的,而视差滚动则是在滚动的时候,内容和多层次的背景实现或不同速度,或不同方向的运动。有的时候也可以加上一些透明度、大小的动画来优化显示。利用background-attachment属性实现。background-attachment: fixed || scroll || local1.fixed:背景图片的位置固定不变2.scroll:当滚动容器的时候,背景图片也会跟随滚动3.local:背景图片会跟随内容一起滚动
## background-attachment介绍<div id="box"><div id="inner"><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p><p>文本</p></div></div><style>#box{width: 300px;height: 300px;background: yellow;overflow: auto;}#inner{width: 250px;height: 400px;background: red;overflow: auto;background-image: url(images/shuli.jpg);/*background-attachment:fixed;*/ /*无论是inner盒子本身发生滚动还是inner盒子内容发生滚动,背景图片都不滚动*//*background-attachment:scroll;*/ /*当inner盒子滚动的时候背景图片也会滚动,inner内容滚动的时候背景图片不滚动*/background-attachment:local; /*滚动inner盒子本身还是inner盒子内容,背景图片都会被滚动*/}</style>
7-3 Stellar.js的使用
stellar.js是一个 jQuery插件,能很容易地给网站添加视差滚动效果。 尽管已经停止了维护,但它非常稳定,与最新版本的jQuery兼容,很多开发者也在使用它。 这个插件在jQuery插件库里很流行。
http://markdalgleish.com/projects/stellar.js
##1. 引用 js包<script src="path/to/jquery/jquery.min.js"></script><script src="path/to/jquery.stellar.min.js"></script>
##2. 引用html<div class="content" id="content1"><p>TEXT HERE</p></div><div class="content" id="content2"><p>TEXT HERE</p></div><div class="content" id="content3" data-stellar-background-ratio="0.5"><p>TEXT HERE</p></div><div class="content" id="content4" data-stellar-background-ratio="0.5"><p>TEXT HERE</p></div><div class="content" id="content5" data-stellar-background-ratio="0.5"><p>TEXT HERE</p></div><div class="content" id="content6" data-stellar-background-ratio="0.5"><p>TEXT HERE</p></div>
##3. 引入CSSbody {font-size: 20px;color: white;text-shadow: 0 1px 0 black, 0 0 5px black;}p {padding: 0 0.5em;margin: 0;}.content {background-attachment: fixed;height: 400px;}#content1 {background-image: url("xxx.jpg");}#content2 {background-image: url("xxx.jpg");}#content3 {background-image: url("xxx.jpg");}#content4 {background-image: url("xxx.jpg");}#content5 {background-image: url("xxx.jpg");");}#content6 {background-image: url("xxx.jpg");}
##4. js调用函数$.stellar({horizontalScrolling: false,responsive: true});
7-4 Stellar.js的详细参数
| 名称 | 说明 |
|---|---|
| horizontalScrolling 和 verticalScrolling | 该配置项用来设置视差效果的方向。horizontalScrolling设置水平方向,verticalScro设置垂直方向, 为布尔值,默认为true |
| responsive | 窗口加载完毕或者改变大小时是否刷新滚动元素,默认为false |
| hideDistantElements | 该配置项用来设置移出视线的元素是否隐藏,其值为布尔值,若不想隐藏则设置为false |
| data-stellar-ratio=”2” | 定义了此元素针对页面滚动的速度比率,比如,0.5为页面滚动的50%,2为页面滚动的200%,所以数值越大,你可以看到页面元素滚动速度越快。 |
| data-stellar-background-ratio | 该配置项用在单个元素中,其值为一个正数,用来改变被设置元素的影响速度。 例如 值为0.3时,则表示背景的滚动速度为正常滚动速度的0.3倍。如果值为小数时最好在样式表中设置 |
八、制作jQuery插件
给jQuery增加方法的两种方式
$.method = fn 静态方法$.fn.method = fn 实例方法
原理:jquery插件其实说白了就是给jquery的原型属性增加一个新的方法,让所有的jquery对象拥有某一个功能。
//通过给prototype添加方法就能够扩展jquery对象$.prototype.pluginName = function() {};//fn 等效于 prototype$.fn.pluginName = function() {};
增加一个静态方法,实现两个数的和,插件
(function ($) {$.add = function (a, b) {return a + b;}}(jQuery))$.add(5, 6);
实例方法制作简易的jquery插件
//1.新建jquery.bgColor.js文件//给jquery对象新增一个设置颜色的方法$.fn.bgColor = function(color){//原型中的this是当前对象this.css("backgroundColor",color);return this;}//2.使用上面自定义的jquery插件//2.1 引入js//2.2 使用自定义的插件//调用我们自己定义的方法给jquery对象赋予颜色$("div").bgColor("red");
自定义表格插件
(function($) {// 内部的变量,外部无法访问,防止变量名冲突var a = 0;// 给$增加了一个实例方法$.fn.table = function (header, data) {var array = [];array.push('<table>');array.push('<tr>');// 生成表头$.each(header, function () {array.push('<th>' + this + '</th>');})array.push('</tr>');// 生成数据行$.each(data, function (index) {// this是当前遍历到的数组中的每一个对象// 拼数据行array.push('<tr>');array.push('<td>' + (index + 1) + '</td>');// 遍历对象,拼表格for (var key in this) {array.push('<td>' + this[key] + '</td>');}array.push('</tr>');})array.push('</table>');this.append(array.join(''));}}(window.jQuery))
