6.jQuery插件的使用

jQuery插件机制

jQuery虽然很强大,但也不可能包含我们项目中用到的各种功能。所以jQuery打造成了很容易被扩展的库。允许通过插件扩展jQuery的功能。
在这里插入图片描述
在这里插入图片描述

如何寻找自己需要的插件

官方网站上http://plugins.jquery.com/

不过官方好像不再维护,并推荐到npm上去搜jquery-plugin
https://www.npmjs.com/
基本上npm上管理的在github上都有。
https://github.com/
再不行直接google了。

一般使用星星多的(1k已经够多了),最近有维护的插件,这样更有保障。
在这里插入图片描述
查看并实现示例代码
阅读文档
在项目中使用

例如使用插件https://github.com/kenwheeler/slick
一般引入**css和js**就行了

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style>
    .panel {
        width: 300px;
        margin: 50px 0 0 50px;
        box-shadow: 0 0 10px #999;
        line-height: 1.8;
        text-align: center;
        font-size: 20px;
        color: #fff;
    }
    
    .title {
        background-color: #c7731f;
    }
    
    h1 {
        margin: 0;
        padding: 0;
    }
    
    .body {
        padding: 30px 10px;
        background-color: #5298c7;
    }
    </style>
</head>

<body>
    <div class="panel">
        <div class="title">
            <h1>唐诗一首</h1>
        </div>
        <div class="body">
            <p>
                白日依山尽,
                <br> 黄河入海流。
                <br> 欲穷千里目,
                <br> 更上一层楼。
                <br>
            </p>
        </div>
    </div>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script src="../../../vendor/jquery.easing.js"></script>
    <script>
    $(function() {

        $('.title').click(function() {

            $(this).siblings('.body').slideUp(1000, 'easeInOutCirc');
        });

    });
    </script>
</body>

</html>

根据它的文档示例来做基本没问题。

3个实用插件的介绍

首先说表单选择输入https://github.com/harvesthq/chosen
没什么好说的,直接看文档示例照着来就行。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="//cdn.bootcss.com/chosen/1.6.2/chosen.css" rel="stylesheet">
</head>

<body>
    <select name="demo" id="demo" style="width: 300px">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
    </select>
    <br>
    <br>
    <select name="demo2" id="demo2" multiple data-placeholder="请选择...">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
    </select>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script src="//cdn.bootcss.com/chosen/1.6.2/chosen.jquery.js"></script>
    <script>
    $(function() {
        $('#demo').chosen();
        $('#demo2').chosen({
            width: '50%'
        });
    });
    </script>
</body>

</html>

第2个:日期时间选择框。https://github.com/amsul/pickadate.js
可以阅读下API文档,更好的使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/themes/default.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/themes/default.date.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/themes/default.time.css" rel="stylesheet">
</head>

<body>
    <input type="text" class="datepicker">
    <br>
    <br>
    <input type="text" class="timepicker">
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script src="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/picker.js"></script>
    <script src="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/picker.date.js"></script>
    <script src="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/picker.time.js"></script>
    <script src="//cdn.bootcss.com/pickadate.js/3.5.6/compressed/translations/zh_CN.js"></script>
    <script>
    $(function() {
        var dateinput = $('.datepicker').pickadate();
        var datepicker = dateinput.pickadate('picker');


        $('.timepicker').pickatime();

        datepicker.on({
            open: function() {
                console.log('Opened up!');
            },
            close: function() {
                console.log('Closed now');
            },
            render: function() {
                console.log('Just rendered anew');
            },
            stop: function() {
                console.log('See ya');
            },
            set: function(thingSet) {
                console.log('Set stuff:', thingSet);
            }
        });
    });
    </script>
</body>

</html>

第3个:图片弹出显示。https://github.com/dimsemenov/Magnific-Popup
可以阅读下API文档,更好的使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="//cdn.bootcss.com/magnific-popup.js/1.1.0/magnific-popup.css" rel="stylesheet">
    <style>
    /* padding-bottom and top for image */
    
    .mfp-no-margins img.mfp-img {
        padding: 0;
    }
    /* position of shadow behind the image */
    
    .mfp-no-margins .mfp-figure:after {
        top: 0;
        bottom: 0;
    }
    /* padding for main container */
    
    .mfp-no-margins .mfp-container {
        padding: 0;
    }
    </style>
</head>

<body>
    <a class="image-popup-vertical-fit" href="http://farm9.staticflickr.com/8241/8589392310_7b6127e243_b.jpg" title="Caption. Can be aligned to any side and contain any HTML.">
        <img src="http://farm9.staticflickr.com/8241/8589392310_7b6127e243_s.jpg" width="75" height="75">
    </a>
    <a class="image-popup-fit-width" href="http://farm9.staticflickr.com/8379/8588290361_ecf8c27021_b.jpg" title="This image fits only horizontally.">
        <img src="http://farm9.staticflickr.com/8379/8588290361_ecf8c27021_s.jpg" width="75" height="75">
    </a>
    <a class="image-popup-no-margins" href="http://farm4.staticflickr.com/3721/9207329484_ba28755ec4_o.jpg">
        <img src="http://farm4.staticflickr.com/3721/9207329484_ba28755ec4_o.jpg" width="107" height="75">
    </a>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script src="//cdn.bootcss.com/magnific-popup.js/1.1.0/jquery.magnific-popup.js"></script>
    <script>
    $(function() {
        $('.image-popup-vertical-fit').magnificPopup({
            type: 'image',
            closeOnContentClick: false,
            mainClass: 'mfp-img-mobile',
            image: {
                verticalFit: true
            }

        });

        $('.image-popup-fit-width').magnificPopup({
            type: 'image',
            closeOnContentClick: true,
            image: {
                verticalFit: false
            }
        });

        $('.image-popup-no-margins').magnificPopup({
            type: 'image',
            closeOnContentClick: true,
            closeBtnInside: false,
            fixedContentPos: true,
            mainClass: 'mfp-no-margins mfp-with-zoom', // class to remove default margin from left and right side
            image: {
                verticalFit: true
            },
            zoom: {
                enabled: true,
                duration: 300 // don't foget to change the duration also in CSS
            }
        });
    });
    </script>
</body>

</html>

开源软件中经常使用的协议:GPL/LGPL/APL/BSD/MIT
GPL/LGPL通常比较严格,尽量不要使用,不然会要求我们的产品也要开源什么的。尽量使用后几种,并把作者的版权信息带上。
会使用还不够,要自己写才牛皮。

如何写一款插件呢

在这里插入图片描述

小心$

写通用插件时很有可能这个$被其他库使用了,所以我们最好在插件内使用jQuery立即执行函数。

在这里插入图片描述
对于复杂参数,通过对象传递配置项参数,写上默认值
可以用extend来实现。判断options,如果用户没有传入,则使用空对象。
在这里插入图片描述
使用命名空间
在这里插入图片描述
例如可以这样使用:
在这里插入图片描述
只用向外暴露coolLightbox方法即可
调用示例:
在这里插入图片描述
第二个为默认init方法

保持链式语法,返回this即可

在这里插入图片描述

实现功能

实现一个修改颜色的小插件

(function($) {
    var namespace = 'colorful';

    var methods = {
        init: function(options) {
            options = $.extend({}, $.fn[namespace].defaults, options);//用extend()扩展参数

            if (options.font) {
                this.css('color', options.color);
            }
            if (options.background) {
                this.css('background-color', options.color);
            }

            return this;//实现链式语法
        }
    };

    $.fn[namespace] = function(method) {
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if ($.type(method) === 'object') {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method' + method + ' does not exist!');
        }
    };

    $.fn[namespace].defaults = {   // $.fn[namespace].defaults这里使用全局变量来修改默认值
        color: 'red',
        background: false,
        font: true
    };
})(jQuery);

测试下插件效果:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. A asperiores assumenda atque cum cupiditate debitis dolore doloribus illum inventore, magnam pariatur placeat similique suscipit! A accusantium cum dolore numquam optio.</p>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script src="jquery.colorful.js"></script>
    <script>
    $(function() {
        //        $('p').colorful('init')

        //        $('p').colorful('init', {
        //            background: true,
        //            font: false
        //        })

        $('p').colorful({
            color: 'green',
            background: true,
            font: false
        }).css('font-size', '30px');
    });
    </script>
</body>

</html>

NEXT:
网页中常用的一种展示效果—jQuery弹出层效果的编写。

一词:flatter奉承;使高兴

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值