Zepto-基础

发布时间:2025-12-09 22:03:48 浏览次数:4

一、1. Zepto是什么?

  • Zepto 是一个轻量级的针对现代高级浏览器的 JavaScript库, 它与jQuery有着类似的api, 如果你会用jQuery,那么你也会用Zepto;

  • 既然和jQuery差不多, 为什么还需要Zepto?
    2.1jQuery更多是在PC端被应用,Zepto更多是在移动端被应用;
    也正是因为jQuery用在PC端, 所以jQuery考虑了很多低级浏览器的的兼容性问题, ,所以代码更多体积更大;
    也正是因为Zepto用在移动端, 所以Zepto则是直接抛弃了低级浏览器的适配问题 , 所以代码更少体积更小;
    2.2综上所述: Zepto其实就是专门用于移动端的轻量级的jQuery;

  • 官方网址:
    英文版:http://zeptojs.com/
    中文版:http://www.css88.com/doc/zeptojs_api/
    找到github下载按钮,进入页面下载后,在下列地址中找到zepto.js,导入HTML文件中;
    路径: \zepto-master\zepto-master\src

  • Zepto的特点
    Zepto采用了模块化的开发, 将不同的功能放到了不同的模块中, 在使用的过程中我们可以按需导入, 也就是需要什么功能就导入什么模块;

  • Zepto注意点
    如果是从官方网站下载的, 那么已经包含了默认的一些模块;
    如果是从github下载的, 那么需要我们自己手动导入每一个模块;
    当然后续学习了NodeJS后, 我们也可以自己定制;

  • 例:点击按钮改变背景颜色

    <html lang="en"><head><meta charset="UTF-8"><title>01-zepto初体验</title><style>*{margin: 0;padding: 0;}p{width: 200px;height: 200px;background: skyblue;}</style><!--<script src="js/jquery-3.1.1.js"></script>--><script src="js/zepto.js"></script><script src="js/event.js"></script> // 在对应下载文件中有这个文件</head><body><button>我是按钮</button><p></p><script>$("button").click(function () {$("p").css({backgroundColor: "red"});});</script></body>

    二、zepto选择器

    Zepto选择器:
    Zepto是模块化开发的, zepto.js核心模块中只包含了基础功能;
    如果想使用高级的选择器必须还要引入高级选择器模块;


    三、zepto动画

    1.zepto动画:
    Zepto是模块化开发的, zepto.js核心模块中只包含了基础功能,如果想使用动画必须引入动画模块;

    2.zepto动画注意点:
    由于zepto是一个轻量级的针对现代高级浏览器的 JavaScript库
    不需要兼容低级浏览器, 所以zepto中的动画是通过CSS3属性来实现动画的
    而jQuery中是通过DOM来实现动画的

    <head><meta charset="UTF-8"><title>03-zepto动画</title><style>*{margin: 0;padding: 0;}p{width: 200px;height: 200px;background: red;/*display: none;*/}</style><script src="js/zepto.js"></script><script src="js/event.js"></script><script src="js/fx.js"></script> // 含有动画模块<script src="js/fx_methods.js"></script> // 以动画形式的 show, hide, toggle, 和 fade*()方法.<!--<script src="js/jquery-3.1.1.js"></script>--></head><body><button>我是按钮</button><p></p><script>$("button").click(function () {// $("p").animate({marginLeft: 500}, 2000);// $("p").hide(2000);// $("p").show(2000);$("p").toggle(2000); // 显示与隐藏的切换});</script></body>

    四、Zepto-tap事件

    1.无论PC端还是移动端都支持click事件,而且不仅仅是jQuery和Zepto支持, 原生的JS也支持;

    2.移动端click事件注意点:
    在企业开发中如果需要在移动端监听点击事件, 一般不会使用click来监听, 因为移动端的事件很多(单击/双击/轻扫/捏合/拖拽等等);
    所以如果通过click来监听,系统需要花费100~300毫秒判断到底是什么事件, 而移动端对事件的响应速度要求很高, 事件响应越快用户体验就越好, 所以如果需要在移动端监听点击事件, 那么请使用tap事件;

    3.tap事件
    tap事件是Zepto自己封装的一个事件, 解决了原生click事件100~300毫秒的延迟问题

    <head><meta charset="UTF-8"><!--在移动端中,需要导入到文件 快捷键:meta:vp--><meta name="viewport" content="width=device-width, initial-scale=1.0"> <style>*{margin: 0;padding: 0;}p{width: 200px;height: 200px;margin: 0 auto;background: red;}</style><!--<script src="js/jquery-3.1.1.js"></script>--><script src="js/zepto.js"></script><script src="js/event.js"></script><script src="js/touch.js"></script> // 导入touch 文件</head><body><p></p><script>$("p").tap(function () {console.log("被点击了");});</script></body>

    五、移动端Touch事件

    1.Zepto是如何实现tap事件的?
    虽然tap事件是Zepto自己封装的事件, 但是无论如何封装肯定都是通过原生JS来实现的
    在原生的JS中专门为移动端新增了几个事件
    touchstart: 手指按下
    touchmove: 手指在元素上移动
    touchend : 手指抬起

    2.注意点:
    这几个事件只支持移动端, 不支持PC端

    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>05-移动端Touch事件</title><style>*{margin: 0;padding: 0;}p{width: 200px;height: 200px;background: red;}</style></head><body><p></p><script>let oDiv = document.querySelector("p");oDiv.ontouchstart = function () {console.log("手指按下");}oDiv.ontouchend = function () {console.log("手指抬起");}oDiv.ontouchmove = function () {console.log("手指移动");}</script></body>

    六、移动端Touch事件对象

    1.Touch事件对象
    移动端的touch事件也是一个事件, 所以被触发的时候系统也会自动传递一个事件对象给我们

    2.移动端touch事件对象中比较重要的三个子对象
    touches: 当前屏幕上所有手指的列表
    targetTouches: 保存了元素上所有的手指里列表
    changedTouches: 当前屏幕上刚刚接触的手指或者离开的手指

    touches和targetTouches
    如果都是将手指按到了同一个元素上, 那么这两个对象中保存的内容是一样的;
    如果是将手指按到了不同的元素上, 那么这个两个对象中保存的内容不一样;
    touches保存的是所有元素中的手指, 而targetTouches保存的是当前元素中的手指;

    changedTouches
    在ontouchstart中保存的是刚刚新增的手指;
    在ontouchend中保存的是刚刚离开的手指;

    let oDiv1 = document.querySelector(".box1");oDiv1.ontouchstart = function (event) {console.log("按下", event.changedTouches);}oDiv1.ontouchend = function (event) {console.log("抬起", event.changedTouches);}

    七、移动端Touch事件位置

  • 手指的位置
    1.screenX/screenY是相对于屏幕左上角的偏移位
    2.clientX/clientY是相对于可视区域左上角的偏移位
    3.pageX/pageY是相对于内容左上角的偏移位
  • <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>08-移动端手指位置练习</title><style>*{margin: 0;padding: 0;}p{width: 100px;height: 100px;background: red;}</style></head><body><p></p><script>/*需求: 通过手指拖拽p*/let oDiv = document.querySelector("p");let startX = 0;let startY = 0;let flag = false;oDiv.ontouchstart = function (event) {if(flag){return}flag = true;startX = event.targetTouches[0].clientX;startY = event.targetTouches[0].clientY;}oDiv.ontouchmove = function (event) {let moveX = event.targetTouches[0].clientX;let moveY = event.targetTouches[0].clientY;let offsetX = moveX - startX;let offsetY = moveY - startY;oDiv.style.transform = `translate(${offsetX}px, ${offsetY}px)`;}</script></body>

    八、移动端点透问题

  • 移动端点透问题
    当一个元素放覆盖了另一个元素, 覆盖的元素监听touch事件,而下面的元素监听click事件;
    并且touch事件触发后覆盖的元素就消失了, 那么就会出现点透问题;

  • 移动端点透问题出现的原因
    2.1当手指触摸到屏幕的时候,系统生成两个事件,一个是touch 一个是click
    2.2touch事件先执行, 执行完后从文档上消失
    2.3click事件有100~300ms延迟, 所以后执行
    2.4但click事件执行的时候触发的元素已经消失了, 对应的位置现在是下面的元素, 所以就触发了下面元素的click事件

  • 移动端点透问题解决方案
    1.1在touch事件中添加 event.preverDefault();阻止事件扩散
    1.2使用Zepto, 但是需要注意老版本的Zepto也会出现点透问题
    1.3使用Fastclick, 最早解决点透问题的插件

  • <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>10-移动端点透问题</title><style>*{margin: 0;padding: 0;}p{text-align: center;font-size: 40px;}.click{width: 300px;height: 300px;background: red;position: absolute;left: 50%;transform: translateX(-50%);top: 100px;}.tap{width: 200px;height: 200px;background: blue;position: absolute;left: 50%;transform: translateX(-50%);top: 150px;}</style></head><body><p class="click">click</p><p class="tap">tap</p><script>let oClick = document.querySelector(".click");let oTap = document.querySelector(".tap");oTap.ontouchstart = function (event) {this.style.display = "none";event.preventDefault(); // 阻止事件扩散}oClick.onclick = function () {console.log("click");}</script></body>

    九、滑动事件(Swipe)

    1.什么是轻扫事件?
    手指快速的往左边滑动 /或者右边滑动 /或者上边滑动 /或者下边滑动

    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>12-zepto-滑动事件</title><style>*{margin: 0;padding: 0;}p{width: 100px;height: 100px;background: red;margin-left: 100px;margin-top: 100px;}</style><script src="js/zepto.js"></script><script src="js/event.js"></script><script src="js/touch.js"></script><script src="js/fx.js"></script></head><body><p></p><script>$("p").swipeLeft(function () {// console.log("向左边轻扫");$(this).animate({marginLeft: "0"}, 2000);});$("p").swipeRight(function () {// console.log("向右边轻扫");$(this).animate({marginLeft: "100px"}, 2000);});$("p").swipeUp(function () {// console.log("向上边轻扫");$(this).animate({marginTop: "0"}, 2000);});$("p").swipeDown(function () {// console.log("向下边轻扫");$(this).animate({marginTop: "100px"}, 2000);});</script></body>

    -End

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477