前 言javascript
JReducss
学习以前,首先咱们须要知道什么是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
对象方法的调用。htmlJQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前台页面上的组件都有对应插件,而且用JQuery插件作出来的效果很炫,而且能够根据本身须要去改写和封装插件,简单实用。java
一、自定义插件的基础知识 |
插件分为两类。数组
一类叫作全局插件,另外一种叫作局部插件。从名字咱们就能够了解到二者的区别。浏览器
全局插件是做用于整个文档的插件。app
局部插件是做用于某一块区域的插件。框架
1. 全局插件的声明函数
$.extend({ func:function(){} // func-->插件名 })
调用方式和函数相似布局
$.func();
2. 局部插件的声明
$.fn.func = function(){}
调用方式有所不一样
$("选择器").func();
二、 自定义插件的准备工做 |
该插件实现了Banner图的滚动效果。
插件具备如下属性:
images : 接受数组类型,数组的每一个值应为对象。对象具备属性: src->图片的路径 title->图片指上后的文字 href->点击图片跳转的页面
scrollTime : 滚动时间,单位毫秒。 5000
bannerHeight : Banner图的高度. 500px
iconColor : 提示图标的颜色。默认 white
iconHoverColor : 提示图标指上以后的颜色。 默认 orange
iconPosition : 提示图标的位置,可选值left/center/right。 默认center
首先,咱们须要新建一个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>
这样基本的准备工做就完成了,接下来就是插件的实现了。
三、 自定义插件的制做 |
这是一个十分实用,使用起来也很是简单的banner图滚动插件。
首先建立一个做用于div的局部插件,而后设置属性默认值
$.fn.scrollBanner = function(obj){ // 声明各个属性的默认值 var defaults = { images : [], scrollTime : 2000, bannerHeight : "500px", iconColor : "white", iconHoverColor : "orange", iconPosition : "center" } // 将默认值与传入的对象比对,若是传入的对象有未赋值属性,则使用默认对象的属性 obj = $.extend(defaults,obj);
}
后面的代码所有写入这个函数中。
这是一个比较清晰的过程,直接用代码展现给你们。
$("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", });
经过一段代码,进行简单的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);
实现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图,可能并不符合咱们的预期。
咱们更想要的是一个能够随意切换本身想要的图片的效果。
咱们顺带作一个图片指上导航小图标,不只切换图片,还让小图标变色的效果。
原理以下:
// 小图标指上之后变色而且切换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将须要滚动的图片导入便可。
这即是制做一个小插件的基本原理和思路了,但愿能帮助到一些初学者。
以后会陆续更新这一系列,给你们带来更多的实用小技巧。
但愿你们多多批评指正。