JQuery实用技巧--学会你也是大神(1)——插件的制作技巧

  前  言

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将需要滚动的图片导入即可。

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

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

   希望大家多多批评指正。

时间: 2024-12-13 13:22:08

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

江苏快3投注技巧江苏×××投注计算公式大神42905407

快.三导师筘:42905407[邀请.码59600009][网纸yf3188-C0m ][信誉平台][大额无忧][公平.公正.公开] 一.在玩的过程中,规避和防范风险是第一要务,也是取得长期成功的前提和保障.不冒险,因为小家输不起,本来就是以小搏小嘛. 二.在玩的过程中,顺应趋势而为是第二要务,也是能在玩的过程中生存的不二法门.追热不追冷,是小家玩的过程中必须要遵守的,因为输不起,不信可以去火葬场打听打听,有多少小家是追冷追死的,绝不危言耸听. 三.在玩的过程中,成功的关键是被动地跟着趋势运动,

CAD初学者要如何学好CAD?CAD大神教你技巧

CAD初学者如何学好CAD?CAD大神教你技巧.就问你想不想学,现在有一些新的小伙伴们开始加入到CAD行业中的这个大家庭中来,但是他们有一些烦恼,那就是CAD初学者要如何学好CAD呢?那下面想要学好CAD的小伙伴们可要注意了,CAD大神教你如何学好CAD,首先第一步就是要学会对CAD图纸的查看,那下面就和小编一起来看看吧,以下就是具体操作. 第一步:首先,电脑中没有下载CAD看图软件的,在电脑桌面中任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD看图,然后进入官网,根据系统提示的步骤下载安

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

本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头的方案可能并不适合创业公司,那么如何保证高并发问题不成为创业路上的拦路虎,是每一个全栈工程师.资深系统工程师.有理想的程序员必备的技能,希望本文助您寻找属于自己的"成金之路",发亮发光. 目录: 场景及解决方法解读 认识负载 数据跟踪 脑图.caoz大神公众号分享 参考资料 秉承知其然及其

干货!这几款实用办公资源网站大神都在用

在工作中我们会需要各种资源,有时为了找资源需要浪费很多时间,还不以一定找到得到,这时就很影响心情,那有没有什么解决方法呢?现在有很多网站是比较成熟里面的功能也是很多的使用的人数也很多,所以今天要给大家分享几个不错实用的网站,希望能有所帮助. 迅捷画图迅捷画图是一个专业的思维导图,流程图制作网站,主题是在线绘制思维导图,流程图,但更具特色的是里面绘制的精美模板,使用频率很高.AnywhereAnything这是一款大型综合类网站,里面有视频有图片,根据某个关键词可以搜索道这个关键词下的所有内容,包

一分快3大小单双技巧大神林亦哲787722888

+扣787722888交流曾经的我也有一段故事,2010年就有了自己的公司,过了两年,开始沾染网堵恶习.开始是玩球,后来在2012年开始接触到网堵,也就是网上的白家了,之后一发而不可收.粗略估计书了快30个.妻子在14年和我离了婚,我一个人带着一个8岁的儿子.想想这几年的堵博生涯,真的就是一场悲剧.中间无数次的想到戒堵,但是都没有成功.每一次输完,总觉得自己是可以有机会重新来过.期望把输的瀛回来,就收手.但是结果却永远都是只有一个,就是越陷越深.还欠了有20个的债务,包括卡袋,朋友的借款.曾几次

学会思考--菜鸟程序员晋升大神之路

"菜鸟"和"大神" 刚刚走出就业的程序员,技术是刚刚起步的基点.那下面我们就聊一聊有关技术的东西.首先请您先想想这几个问题.现在社会上有很多程序员,那您是否可想过程序 员为什么会有不同的水平?你又是哪一类的程序员?"菜鸟"程序员和"大神"程序员差在哪里?真是差在技术上了吗?那不是差在技术上那差在了哪里? 上面很多一连串的问题,没有把你搞晕吧!那就听我一一给您分析这个问题背后的答案.确切的说程序员分为"菜鸟"

聊聊成为大神路上的过程(决定伟大水平和一般水平的关键因素,既不是天赋,也不是经验,而是[刻意练习]的程度,要多看别人的代码)

每个人都在成为大神的路上,只不过有的人在走,而有的人在跑. 写在前面的话 在开始正文之前我先跟大家分享一个我身边的例子.我有两个朋友,A和B.B从高一开始打dota,A从高二开始,到高中毕业的时候,A已经是一个 2100分的大神级别的人物,而B只有1200分而已.为什么A打的时间比B短,而水平却比B高呢?是天赋?是智商?似乎都不是. 我对两个人还是比较了解的,虽然同样是打dota,但是A和B之间有着很大差别的.A除了像B一样打dota之外,会看一些成名已久的大神的教学视 频,会看自己打dota的

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

iOS开发大神必备的Xcode插件 写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xcode插件,下面我就为大家介绍几款开发中比较常用的Xcode插件(此处应有掌声). 插件推荐 1. AMAppExportToIPA 简介:AMAppExportToIPA 是一款可以让你在Xcode的project navigator界面中直接右键点击xxx.app -> Export IPA就可以

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

干货!IT小伙伴们实用的网站及工具大集合!持续更新! Other  崔庆才  4个月前 (12-24)  6720℃  7评论 1.Git 还在担心自己辛辛苦苦写的代码被误删了吗?还在担心自己改错了代码不能挽回吗?还在苦恼于多人开发合作找不到一个好的工具吗?那么用Git就对了,Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.有了它,代码托管不是问题,版本控制不再苦恼,多人开发变得简单易行. 链接:http://git-scm.com/ 2.GitHub 学