zoukankan      html  css  js  c++  java
  • JavaScript课程——Day23(插件、Zepto)

    1、插件

      1.1、类级插件

    // 扩展在$.extend()下面:扩展工具方法 如:$.map() $.each()
    ; (function ($) {
        $.extend({
            插件名1: function () { },
            插件名2: function () { }
        });
    })(jQuery);
    // 调用方式
    $.插件名1();
    $.插件名2();

      1.2、对象级插件

    // 扩展在$.fn.extend()下面:扩展JQ对象下的插件 如:jQuery对象.css() jQuery对象.html()
    ; (function ($) {
        $.fn.extend({
            插件名1: function () { },
            插件名2: function () { }
        });
    })(jQuery);
    // 调用方式
    jQuery对象.插件名1()
    jQuery对象.插件名2()

      1.3、插件的基本要点

        1、jQuery插件的文件名推荐命名为jquery.[插件名].js,以免和其他javascript库插件混淆。

        2、所有的对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上。

        3、在插件内部,this指向的是当前通过选择器获取的jQuery对象,而不像一般的方法那样,例如click(),内部的this指向的是DOM元素。

        4、可以通过this.each来遍历所有元素。

        5、所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题,为了更稳妥一些,设置可以在插件头部先加上一个分号,以免他人的不规范代码给插件带来影响。

        6、插件应该返回一个jQuery对象,以保证插件的可链式操作,除非插件需要返回的是一些需要获取的量,例如字符串或者数组等。

        7、避免在插件内部使用$作为jQuery对象,而应该使用完整的jQuery表示。这样可以避免冲突。当然,也可以利用闭包这种技巧来回避这个问题,使插件内部继续使用$作为jQuery的别名。很多插件都是这样做的。

    2、Zepto

    Zepto 是移动端开发框架,是 jQuery 的轻量级代替品;API 及语句同 jQuery 相似,但文件更小(可压缩至 8KB)。是目前功能完备的库中最小的一个。随着移动端的愈加火爆,目前很多 HTML5 的框架都在支持移动方向,Zepto 就是 jQuery 的移动端版本, 可以看做是一个轻量级的jQuery。如果你会用jQuery,那么你也会用Zepto, Zepto的设计目的是提供 jQuery的类似的 API,但并不是 100%覆盖 jQuery 。Zepto 有一个 5-10k 的通用库、下载并快速执行、有一个熟悉通用的 API,所以你能把你主要的精力放到应用开发上。

    Zepto.js 中文文档:https://zeptojs.bootcss.com/

      2.1、Zepto.js介绍

        1)Zepto.js特点

      • 1、针对的是移动端
      • 2、轻量级,压缩版本只有9.6KB
      • 3、语法大部分同jQuery一样,学习成本低,上手快

        2)jQuery和Zepto的区别在哪里

      • 1、jQuery更多的是在PC端被应用,因此,考虑了很多低级浏览器的兼容性问题;而Zepto.js则是直接抛弃了低级浏览器的适配问题,显得很轻盈;
      • 2、Zepto.js在移动端被运用的更加广泛;
      • 3、jQuery的底层是通过DOM来实现效果的,Zepto.js是用css3来实现的;
      • 4、Zepto.js可以说是轻量级版本的jQuery

      2.2、Zepto模块

      为了保持原码的精简,Zepto默认只加载一些模块,当你需要某些模块时,可以把对应的模块加载进来。

      2.3、Zepto的使用

    <script src="js/zepto.js"></script>
    <script src="js/touch.js"></script>
    <script>
        $(function () {
            $('#box').on('tap', function (ev) {
                console.log('执行了');
                console.log(ev);
            })
        })
    </script>

      2.4、Zepto的特点

        2.4.1、获取元素

    // 1、Zepto 的 width()、height()是根据盒模型决定的,包含 padding 和 border 的值
    // 而jq中不包含padding和border
    console.log($('#box').width()); // 122  width+padding+border
    console.log($('#box').height()); // 122  width+padding+border
    
    
    // 2、Zepto 中没有 innerWidth()和 outerWidth()系列
    console.log($('#box').innerWidth());
    console.log($('#box').outerWidth());

        2.4.2、offset

      • offset()在jQuery中,只返回元素相对文档的距离
      • 而在Zepto中,返回的值还包含width和height

        2.4.3、position

      • 返回离它最近的有定位属性的父级的距离,如果没有定位的父级,则返回到body的距离

        2.4.4、touch事件

    var box = $('#box');
    
    // 点击
    box.tap(function () {
        console.log('tap');
    })
    box.on('tap', function () {
        console.log('tap');
    })
    
    
    // 单击
    box.on('singleTap', function () {
        console.log('singleTap');
    });
    
    // 双击
    box.on('doubleTap', function () {
        console.log('doubleTap');
    });
    
    // 长按  当一个元素被按住超过750ms
    box.on('longTap', function () {
        console.log('longTap');
    });
    
    // 滑动  当元素被划过(同一个方向滑动距离大于 30px)时触发
    box.on('swipe', function () {
        console.log('swipe');
    });
    
    // 左滑
    box.on('swipeLeft', function () {
        console.log('swipeLeft');
    });
    
    // 右滑
    box.on('swipeRight', function () {
        console.log('swipeRight');
    });
    
    // 上滑
    box.on('swipeUp', function () {
        console.log('swipeUp');
    });
    
    // 下滑
    box.on('swipeDown', function () {
        console.log('swipeDown');
    });
  • 相关阅读:
    文件夹生成zip
    html 字符串 生成 pdf 完美解决中文不显示
    layui 数据表格+分页+搜索+checkbox+缓存选中项数据
    排序算法总结
    排序算法(10)--Distribution Sorting--分布排序[2]--Radix Sort--基数排序
    排序算法(8)--Merge Sorting--归并排序--Merge sort--归并排序
    [Android]在Dagger 2中使用RxJava来进行异步注入(翻译)
    [Android]使用Dagger 2进行依赖注入
    [Android]Android端ORM框架——RapidORM(v2.1)
    [Android]使用MVP解决技术债务(翻译)
  • 原文地址:https://www.cnblogs.com/miaochaofan/p/14787026.html
Copyright © 2011-2022 走看看