前  言

JRedu

学习之前,首先我们需要知道什么是JQuery?
  JQuery是一个优秀的javascript框架。
  JQuery是继Prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。它是轻量级的js库,这是其它的js库所不及的,它兼容CSS3,还兼容各种常用浏览器。
  JQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。
  JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。JQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。进行jQuery插件开发前,首先要知道两个问题:什么是jQuery插件?jQuery插件如何使用?  第一个问题,jQuery插件就是用来扩展jQuery原型对象的一个方法,简单来说就是jQuery插件是jQuery对象的一个方法。其实回答了第一个问题,也就知道第二个问题的答案了,jQuery插件的使用方式就是jQuery对象方法的调用。

  JQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前台页面上的组件都有对应插件,并且用JQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。

  1、自定义插件的基础知识

1.1  插件的分类

  插件分为两类。

  一类叫做全局插件,另一种叫做局部插件。从名字我们就可以了解到两者的区别。

  全局插件是作用于整个文档的插件。

  局部插件是作用于某一块区域的插件。

  

1.2插件的声明和调用

  1. 全局插件的声明

    $.extend({
     func:function(){} // func-->插件名
    })

    调用方式和函数类似

    $.func();

  2. 局部插件的声明

      $.fn.func = function(){}

    调用方式有所不同

    $("选择器").func();
  2、 自定义插件的准备工作

2.1插件的功能介绍

   该插件实现了Banner图的滚动效果。

   插件具有以下属性:

  images :   接受数组类型,数组的每个值应为对象。对象具有属性: src->图片的路径 title->图片指上后的文字 href->点击图片跳转的页面
   scrollTime :   滚动时间,单位毫秒。 5000
   bannerHeight :   Banner图的高度. 500px
   iconColor :   提示图标的颜色。默认 white
   iconHoverColor :   提示图标指上之后的颜色。 默认 orange
   iconPosition :   提示图标的位置,可选值left/center/right。 默认center

2.2基础文件的准备

  首先,我们需要新建一个HTML文件和一个JS文件。

  然后将JS文件和JQuery文件导入进来。

  然后新建一个空div。

<div id="banner">

</div>

  用JQuery导入几张图片

    <script type="text/javascript">
$("#banner").scrollBanner({
images : [
{src:"img/banner1.jpg",href:"http://www.baidu.com"},
{src:"img/banner2.jpg",href:"http://www.sina.com"},
{src:"img/banner3.jpg",href:"http://www.qq.com"},
{src:"img/banner4.jpg",href:"http://www.jredu100.com"},
],
});
</script>

  这样基本的准备工作就完成了,接下来就是插件的实现了。

  3、 自定义插件的制作

3.1声明属性值

  

  这是一个十分实用,使用起来也非常简单的banner图滚动插件。

  首先创建一个作用于div的局部插件,然后设置属性默认值

  

     $.fn.scrollBanner = function(obj){
// 声明各个属性的默认值
var defaults = {
images : [],
scrollTime : 2000,
bannerHeight : "500px",
iconColor : "white",
iconHoverColor : "orange",
iconPosition : "center"
 }
// 将默认值与传入的对象比对,如果传入的对象有未赋值属性,则使用默认对象的属性
obj = $.extend(defaults,obj);
   }

  后面的代码全部写入这个函数中。

3.2组建DOM布局

  这是一个比较清晰的过程,直接用代码展示给大家。

  

        $("body").css({
"padding":"0px",
"margin" :"0px"
});
this.empty().append("<div class='scrollBanner-banner'></div>");
$.each(obj.images,function(index,item){
$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+item.href+"' target='_black'><img src='"+item.src+"' title='"+item.title+"' /></a></div>");
});
$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+obj.images[0].href+"' target='_black'><img src='"+obj.images[0].src+"' title='"+obj.images[0].title+"' /></a></div>"); this.append("<div class='scrollBanner-icons'></div>")
$.each(obj.images,function(index,item){
// data-*属性 :是H5允许用户自行在HTML标签上保存数据的属性。
// 保存在data-*中的数据,可以使用JS读取调用。
$(".scrollBanner-icons").append("<span data-index="+index+" class='scrollBanner-icon'></span>");
}); $(".scrollBanner-icons").css({
"width":25*obj.images.length+"px",
"height":"5px",
"position":"absolute",
"bottom":"40px",
"left":"0px",
"z-index":"100",
});
switch(obj.iconPosition){
case "left":
$(".scrollBanner-icons").css({
"left":"50px",
});
break;
case "right":
$(".scrollBanner-icons").css({
"right":"50px",
});
break;
case "center":
$(".scrollBanner-icons").css({
"left":"50%",
"margin-left":"-"+12.5*obj.images.length+"px"
});
break;
}
$(".scrollBanner-icon").css({
"width":"15px",
"height":"5px",
"background-color":obj.iconColor,
"display":"inline-block",
"margin":"0px 5px",
});

3.3设置CSS的属性

  通过一段代码,进行简单的CSS设置。

        this.css({
"width":"100%",
"height":obj.bannerHeight,
"overflow":"hidden",
"position":"relative"
}) $(".scrollBanner-banner").css({
"width":obj.images.length+1+"00%",
"height":obj.bannerHeight,
"transtition":"all .5s ease"
})
$(".scrollBanner-bannerInner").css({
"width":100/(obj.images.length+1)+"%",
"height":obj.bannerHeight,
"overflow":"hidden",
"float":"left"
})
$(".scrollBanner-bannerInner img").css({
"width":"1920px",
"height":obj.bannerHeight,
"position":"relative",
"left":"50%",
"margin-left":"-960px"
})
$(".scrollBanner-icon:eq(0)").css("background-color", obj.iconHoverColor);

3.4实现banner图的滚动

  实现banner图的不停滚动,基本原理是利用定时器。

  然后不停改变最外面大div的margin-left属性,改变显示在屏幕上的图片,再加上适当的动画效果,形成滚动。

  最后通过设定好的参数变量,修改滚动的速度。

  同样的,附上一段代码。

  

        var count=1;
var icons = $(".scrollBanner-icon");
setInterval(function(){
$(".scrollBanner-banner").css({
"margin-left":"-"+count+"00%",
"transition":"all .5s ease"
});
$(".scrollBanner-icon").css("background-color", obj.iconColor);
$(".scrollBanner-icon:eq("+count+")").css("background-color", obj.iconHoverColor); if (count>=obj.images.length){
$(".scrollBanner-icon:eq(0)").css("background-color", obj.iconHoverColor);
} if (count>obj.images.length) {
count=0;
$(".scrollBanner-banner").css({
"margin-left":"0px",
"transition":"none"
});
}
count++;
},obj.scrollTime);

  这样之后,banner图就可以自动滚动了,可是一个只能不停滚动的banner图,可能并不符合我们的预期。

  我们更想要的是一个可以随意切换自己想要的图片的效果。

3.5实现图片的自由切换

  我们顺带做一个图片指上导航小图标,不仅切换图片,还让小图标变色的效果。

  原理如下:

  

        // 小图标指上以后变色并且切换banner图
$(".scrollBanner-icon").mouseover(function(){
$(".scrollBanner-icon").css("background-color",obj.iconColor);
// 由span触发mouseover事件,则this指向这个span。
// 但是,这this是JS对象,必须使用$封装成JQuery对象。
$(this).css("background-color",obj.iconHoverColor);
var index = $(this).attr("data-index");
count = index; // 将计数器count修改为index的值,让Banner滚动的定时器能够刚好滚到所指图片的下一张。
$(".scrollBanner-banner").css({
"transition":"none",
"margin-left":"-"+index+"00%",
});
})

  这样,一个非常好用的banner图滚动插件就完成了。

   当我们使用的时候,只需新建一个div,起好ID,然后用JS将需要滚动的图片导入即可。

   这便是制作一个小插件的基本原理和思路了,希望能帮助到一些初学者。

   之后会陆续更新这一系列,给大家带来更多的实用小技巧。

   希望大家多多批评指正。

JQuery实用技巧--学会你也是大神(1)——插件的制作技巧的更多相关文章

  1. 7天教你精通变大神,学CAD关键还要掌握方法,纯干货新手要看

    接触CAD初期是“痛苦”的,“煎熬”的,也是充满“成就”的. 痛苦是初学者怎么都不懂,需要学习的东西很多,整个过程是有些痛苦的. 煎熬也是每个求学阶段都会遇到的状态,眼睛会了,手不会,这个状态很难受. ...

  2. 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享

    本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头 ...

  3. ACM 大神的经验加技巧(当然不是我的拉——

    大神 犯错合集及需要注意的东西 1.在一个地图求最大面积的类问题中,要注意障碍结点的影响. 2.ll(),表示的是在运算后把括号内强制转化为类型ll,而(ll)表示后面的每个玩意都强制转化为类型ll. ...

  4. 学会了这一招,距离Git大神不远了!

    大家好,今天我们来介绍git当中一项非常重要的功能--交互式工具 有的时候如果我们要处理的文件很多,使用git add .等操作会非常有隐患,因为很有可能我们一不小心就疏忽了一些内容.如果我们使用一个 ...

  5. CAD制图初学入门如何学好CAD?CAD大神总结5点诀窍,必须收藏

    现在有很多的小伙伴们都加入到了CAD这个大家庭中,一开始都是都是一脸懵的状态,更不知要从何入手! 小编才开始也是,但是只要掌握好CAD的技巧和脊髓,一切都不是事.CAD大神总结5点诀窍,悄悄告诉你,必 ...

  6. 干货!IT小伙伴们实用的网站及工具大集合!持续更新!

    1.Git 还在担心自己辛辛苦苦写的代码被误删了吗?还在担心自己改错了代码不能挽回吗?还在苦恼于多人开发合作找不到一个好的工具吗?那么用Git就对 了,Git是一个开源的分布式版本控制系统,用以有效. ...

  7. 【推荐】Java工程师如何从普通成为大神值得一读

    本文源自 http://www.hollischuang.com/archives/489 一点感悟 java作为一门编程语言,在各类编程语言中作为弄潮儿始终排在前三的位置,这充分肯定了java语言的 ...

  8. javascript大神修炼记(1)——入门介绍

    读者朋友们好,从今天开始,我将带领新朋友们,从了解javascript开始,一步一步地进阶到大神境界,别的不废话,现在开始,我们就一点一点地从入门阶段开始. 我们还是介绍一下javascript的身世 ...

  9. 李洪强iOS开发之大神必备的Xcode插件

    iOS开发大神必备的Xcode插件 写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xco ...

随机推荐

  1. 【思维】【水】 南阳oj 喷水装置(一)

    描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1& ...

  2. OpenOfice将offic转为pdf并且在web显示

    1.将office首先要安装OpenOfice,傻瓜式安装就好了,之后可以使用下列代码将word转为pdf.这个需要导入jodconverter-2.2.2里的 ja r包 import java.i ...

  3. F数圈圈

    Description 幼儿园的小朋友对数字其实不是很感兴趣,他们更感兴趣的是形状,现在给你一个数字,小朋友都会数出其中一共有多少圆圈圈 Input 一个数字n长度不超过19位 Output 输出其中 ...

  4. Java第一个程序(CMD环境)

    在新学Java配置好JDK之后,根据例子用CMD命令运行第一个java程序出错.是这样的: 1,在某一个盘(最好是英文路径),新建记事本输入java程序,例如: 保存为HelloJava.java. ...

  5. [STM32F429-DISCO-HAL]2.先学会点亮LED和使用LCD。。。

      首先就简单的一秒闪烁一次LED灯,进而类比推理其他外设的配置过程.然后呢我们就用上LCD吧,毕竟这块板上占地面积最大的就是这个2.4'LCD了.   先贴出简洁的main函数.很干净,比较容易看懂 ...

  6. 关于"软件评测师"

    参考书目 <软件评测师考试考点分析与真题详解>http://item.taobao.com/item.htm?spm=a1z09.2.9.82.qx67QK&id=18924026 ...

  7. android 适配器 ArrayAdapter,SimpleAdapter的学习

    今天认真看了下android适配器,学习了下它的使用方法. 一,ArrayAdapter ArrayAdapter 比较简单,只可以存放一行文本信息.下面是简单的实现 private ListView ...

  8. 剑指OFFER——顺时针打印矩阵

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8 ...

  9. JavaScript之AJAX:原生ajax入门

    背景 传统的Web应用允许用户端填写表单(form),当提交表单时就向网页服务器发送一个请求.服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分H ...

  10. 程序员/PM怎么让项目预估的时间更加准确

    项目时间的估算对项目的成败至关重要.项目时间管理包括了项目按时完成所需的各个过程.但是,在实际项目中,经常出现项目延期,估算严重不准确的现象. 一个我曾经共事过的很有经验的项目经理曾宣称说,他会拿程序 ...