JavaScript课程——Day23(插件Zepto)

Posted 别动我咖喱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\');
});

以上是关于JavaScript课程——Day23(插件Zepto)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript课程——Day16(扩展原型上的方法继承)

JavaScript课程——Day20(jQuery:使用选择器节点遍历操作其他属性操作)

JavaScript课程——Day24(bootstrap简介全局的css样式组件)

JavaScript课程——Day22(jQuery预制动画自定义运动运动其他$下的方法数组方法)

day23 组合(补充)和 继承

day23-xml解析