Webcourse/04-JavaScript基础/49-Zepto入门.md
2021-04-07 13:49:10 +08:00

242 lines
5.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Zepto 的介绍
### 什么是 Zepto
zepto是轻量级的JavaScript库专门为移动端定制的框架
与jquery有着类似的API俗称会jquery就会用zepto
### zepto的特点
- 针对移动端
- 轻量级压缩版本只有8kb左右
- 响应执行快
- 语法API大部分同jquery一样学习难度低上手快
- 目前API完善的框架中体积最小的一个
### 相关网址
- 官网<http://zeptojs.com/>
- GitHub<https://github.com/madrobby/zepto>
## Zepto jQuery 的前世今生
### 相同点
- 都是优秀的js函数库
- 语法API大部分都一样zepto是按照jquery的思路来设计的
- Zepto 相当于 jQuery 的子集
- 同jQuery一样都是以`$`符号为核心函数
### 不同点
## Zepto 的初体验
1Zepto 库的下载
我们去官网下载 Zepto的开发版本`zepto.js`
![](http://img.smyhvae.com/20180414_2210.png)
官网里还有这样一张图
![](http://img.smyhvae.com/20180414_2215.png)
上图的意思是
- 最前面打钩的那五个api已经包含在`zepto.js `文件里了
- 后面没有打钩的那些api如果需要用它们必须单独下载响应的文件
比如说移动端的 touch 事件是很常见的我们可以将`touch.js`这个文件下载稍后用
2代码演示
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#btn {
width: 200px;
height: 200px;
background: pink;
margin: 10px auto;
}
</style>
</head>
<body>
<div id="btn">我是 div</div>
<script src="libs/zepto1.2.0.js"></script>
<script src="libs/touch.js"></script>
<script>
$(function () {
$('#btn').on('touchstart', function () {
alert('hello world');
});
});
</script>
</body>
</html>
```
上方代码实现的效果是当手在div上滑动时就会弹出 alert窗可以看出这里面代码的写法和 jQuery 是一致的
注意我们要将浏览器切换到手机模式才能看到`touchstart`事件的效果否则在浏览器上点来点去是没有反应的
## Zepto jQuery 相同的 api
> 意思是jQuery Zepto 有哪些共同点
### jQuery 的主要特性
下面来讲一下 jQuery 的主要特性jQuery 的核心函数`$`jQuery 对象它们对 Zepto 来说同样适用
**1jQuery 的核心函数`$`**:
作为函数使用参数
- function
- html字符串
- DOM code
- 选择器字符串
作为对象调用(方法)
- $.ajax() $.get() $.post()
- $.isArray() $.each() $.isFunction() $.trim()
**2jQuery 对象**
概念jquery核心函数$()调用返回的对象就是jquery对象的数组可能有只有一个
使用列举
- addClass()
- removeClass()
- show()
- find()
### 代码举例
1`$.each()`方法举例遍历数组
```html
<script src="libs/zepto-1.2.0.js"></script>
<script src="libs/zepto-1.2.0.js"></script>
<script>
var arr = [2, 4, 6, 8];
$.each(arr, function (index, item) {
console.log(index, item);
});
</script>
```
打印结果
![](http://img.smyhvae.com/20180416_1145.png)
2`append()`举例
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.box1 {
width: 200px;
height: 200px;
background: pink;
}
</style>
</head>
<body>
<div class="box1"></div>
<script src="libs/zepto-1.2.0.js"></script>
<script src="libs/touch.js"></script>
<script>
$('.box1').on('touchstart', function () {
$('.box1').append('<p>我是新添加的元素</p>');
});
</script>
</body>
</html>
```
上方代码实现的效果是每次当手在box1上滑动时会在 box1 中新添加一个元素
4`find()`方法举例
```javascript
$('.box1').on('touchstart', function () {
console.log('touch');
$(this).find('p').css('background', 'red');
});
```
代码解释找到 box1 中的 p 标签 p 标签设置背景色
注意代码里的`$(this).find()`相当于`this.find`只不过this没有find方法而$有find方法
5`show()`方法举例
```javascript
$(`.box1`).on('touchstart', function () {
$('.box2').show();
});
```
假设 box2 一开始是隐藏的事件中 box2 显示出来