一 概述
- Zepto项目地址
- Zepto介绍
- Zepto入门案例
- 参考
二 Zepto项目地址
2.1 项目地址Zepto
Zepto:https://github.com/madrobby/zepto
2.2 文件下载:zepto/src/目录下
2.3 如何使用
说明:
- 将js文件放入js目录下
- 示例项目导入js中的依赖文件(目录结构如上图)
三 Zepto介绍
- 发音:仄普托
- 用文档的话来说,Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api
- 如果你会用jquery,那么你也会用zepto
- 主要针对移动端,因为不兼容IE浏览器,所以更轻量级,体积更小,才10k左右
- 为移动端各事件提供很好的支持,但它也有部分API是和jQuery的实现方式是不同的
四 Zepto入门案例
4.1 Hello Zepto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>第一个Demo</title> </head> <body> <div></div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { $('div').html("Hello Zepto") }); </script> </html>
|
4.2 事件ready和onload的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件ready和onload的区别</title> </head> <body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //DOM加载完毕,图片并未完全加载,调用时机比较快 }); $(function () {
}); $().ready(function () { }) window.onload = function () { //全部文件加载完毕,调用时机比较久 } </script> </body> </html>
|
4.3 zepto转Dom对象
如果需要用到原生js的api,可将zepto的对象和dom对象互相转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom对象和zepto对象互转</title> </head> <body> <div id="two"></div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script> $(document).ready(function () { // zepto对象转DOM对象 $('div')[0].className = "one" // dom对象转zepto对象 $(two).addClass("two") }); </script> </html>
|
4.4 选择器
选择器的使用基本跟jquery类似,基本选择器,后台选择器,子元素选择器,相邻元素选择器等等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择器</title> </head> <body> <div></div> <div id="demo1"></div> <div class="demo2"></div> <p class="p1"></p> <p class="p2"></p> <div id="demo3"> <div class="one"> <p>你好</p> </div> </div> <div id="demo4"> <div class="two"> <p>你好</p> </div> </div> <div id="demo5"> <div>11</div> <p>22</p> <p>33</p> </div> <div id="demo6"> <div>我是兄弟节点</div> <p>44</p> <p>55</p> <p>66</p> </div> <div id="demo7"> <div title="demo8"></div> <div title="demo9"></div> <div title="demo10"></div> <div title="demo11"></div> <div title="demo12"></div> </div> <div id="demo13"> <div>过滤1</div> <div>过滤2</div> <div>过滤3</div> </div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //元素选择器 //$('div').html("我是元素选择器") //id选择器 $('#demo1').html("我是id选择器") //类选择器 $('.demo2').html("我是类元素选择器") //群组选择器 $('.p1,.p2').html("我们是群组选择器") //通配符选择器 $('*').addClass("act") //后代选择器 $("#demo3 .one p").css("color","red"); //子元素选择器 $("#demo4 > .two").css("font-size","30px") //相邻元素选择器 $("#demo5 div + p").css("color","blue") //兄弟选择器 $("#demo6 div ~ p").css("color","green") //属性过滤选择器 $("#demo7 div[title='demo9']").html("属性过滤选择器") //子元素过滤选择器 $("#demo13 div:nth-child(2)").html("我是子元素过滤选择器") }) </script> </html>
|
4.5 Zepto对DOM的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zepto对dom操作</title> </head> <body> <div id="demo"> <div> <p>你好</p> </div> </div> <ul> <li>删除</li> </ul> <p>要被替换的节点</p> <p id="demo1">被包裹的节点</p> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //var $demo = $("<div class='cr'>被插入的div</div>") //$("#demo").append($demo); //元素插入到选中的元素后面 //$demo.appendTo("#demo") //$("#demo").prepend($demo) //元素插入到选中元素的第一个 //$demo.prependTo("#demo") //$("#demo").after($demo) //插入到元素之后,同级别 //$demo.insertAfter("#demo") //$("#demo").before($demo)
//删除操作 //$("ul li").remove() //节点删除 //$("ul li").empty() //复制节点 // $("ul li").click(function () { // $(this).clone().appendTo("ul") // }) // 替换节点replaceWith //$("p").replaceWith("<span>我已被替换</span>") //包裹节点 wrap $("#demo1").wrap("div") }) </script> </html>
|
4.6 Zepto对dom属性操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zepto对dom属性操作</title> <style type="text/css"> .red{ color: red; } .lager{ font-size: 30px; } </style> </head> <body> <div title="sx" class="red">属性操作</div> <button>按钮</button> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> //console.log($("div").attr("title")) //获取属性值 //$("div").attr("name","att") //添加属性值 //$("div").attr({"name":"attr","class":"test"})//添加多个属性值 //删除属性值 //$("div").removeAttr("title") //添加样式操作 //$("div").addClass("red lager") //删除样式 //$("div").removeClass() //切换样式 toggle toggleClass(控制样式的添加和删除) $("button").click(function () { //$("div").toggle() $("div").toggleClass("red") }); //判断是否含有某个样式 hasClass console.log($("div").hasClass("red")); </script> </html>
|
4.7 获取元素对象api
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="demo"> <p>我是第一个元素</p> <h3>我是第二个元素</h3> <p>我是第三个元素</p> </div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //next是取得紧邻的后面的同辈元素 console.log($("#demo p").next()) //prev获取紧邻的前面的同辈元素 console.log($("#demo h3").prev()) //siblings获取前后的所有同辈元素 console.log($("#demo h3").siblings()) //获取直系父节点 console.log($("#demo h3").parent()) console.log($("#demo h3").parents()) }) </script> </html>
|
4.8 Zepto进行css样式修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zepto中的css-dom操作</title> </head> <body> <div class="one">我是一个CSS的测试div</div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //$(".one").css("color","red").css("font-size","36px"); $(".one").css({ color:"blue", fontSize:"30px" }); $(".one").width(500); $(".one").height(500); $(".one").css("background","red"); }) </script> </html>
|
4.9 事件绑定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件绑定</title> </head> <body> <div id="one">事件绑定</div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#one").bind("click",function (ev) { console.log("我是bind方式的绑定") }) $("#one").click(function (ev) { console.log("我是click方式的点击") }) $("#one").on("click",function (ev) { console.log("我是on事件") }) }); </script> </html>
|
4.10 事件冒泡和事件捕获
Zepto不能进行事件捕获,所以需要用原生js,并将绑定事件默认值false改成true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件冒泡和事件捕获</title> </head> <body> <div id="c"> <div id="b"> <div id="a">我是事件A</div> </div> </div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> //事件冒泡,从底到顶级冒泡,过程中凡是元素添加事件的,都会被执行 $(document).ready(function () { $("#c").bind("click",function () { console.log("我是事件c") }) $("#a").bind("click",function () { console.log("我是事件a") }) }); //从顶级到底,过程中凡是元素添加事件的,都会被执行 // document.getElementById("a").addEventListener("click",function () { // console.log("我是事件a") // },true); // document.getElementById("c").addEventListener("click",function () { // console.log("我是事件c") // },true); </script> </html>
|
4.11 事件委托
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件委托代理</title> </head> <body> <ul> <li>我是1</li> <li>我是2</li> <li>我是3</li> <li>我是4</li> </ul> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> $(document).ready(function () { //绑定事件非常消耗性能 // $("li").bind("click",function () { // console.log("我被bind事件绑定了") // }) //click非常消耗性能 // $("li").click(function () { // console.log("我被click事件绑定了") // }) //one 只能被调用一次 // $("li").one("click",function () { // console.log("one事件只能被执行一次") // })
//live document绑定事件(只绑定一次) 存在多层冒泡缺点 // 利用冒泡事件的方式,就叫做事件委托或代理 // $("li").live("click",function () { // console.log("live方式绑定") // }) //delegate 事件代理 // $("ul").delegate("li","click",function () { // console.log("delegate事件代理绑定") // })
// on 事件以上几种方式的集合 $("ul").on("click","li",function () { console.log("on事件代理绑定") }) //事件解除绑定 $("ul").off() $("ul").unbind()
}); </script> </html>
|
4.12 事件其他用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件其他用法</title> </head> <body> <button>按钮</button> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript" src="./js/flexible.js"></script> <script type="text/javascript"> $(document).ready(function () { //自定义事件 // $("button").bind("muke",function () { // console.log("触发自定义事件") // }) // $("button").trigger("muke")
//命名空间 // $("button").bind("click",function () { // console.log("我是普通的点击事件") // }) // $("button").bind("click.muke",function () { // console.log("我是第二个普通事件") // }) // $("button").unbind(".muke")
//绑定多个事件 $("button").bind("click",function () { console.log("111") }).bind("touchstart",function () { console.log("222") }) }) </script> </html>
|
4.13 Zepto动画
因为zepto.min是轻量级的,只保留核心功能,所以动画需要引入相关的js代码,可自行到git下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Zepto动画</title> </head> <body> <div>123</div> <button>按钮</button> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript" src="./js/fx.js"></script> <script type="text/javascript" src="./js/fx_methods.js"></script> <script type="text/javascript"> $(document).ready(function () { $("div").css({"fontSize":"30px","color":"red"}) $("button").bind("click",function () { //$("div").toggle("slow") //切换元素的显示和隐藏 //$("div").hide(3000) 隐藏 //$("div").hide("slow") //$("div").show("slow") //$("div").fadeIn("slow") //$("div").fadeOut("slow") //$("div").fadeToggle("slow") //切换元素的淡入和淡出 //$("div").fadeToggle("slow") $("div").fadeTo(3000,0.3) }) }) </script> </html>
|
4.14 自定义animate动画函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zepto动画函数</title> <style type="text/css"> div{ position: absolute; width: 200px; height: 200px; background-color: #f27c01; text-align: center; line-height: 200px; top: 0; left: 0; } </style> </head> <body> <div>我是方块</div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript" src="./js/fx.js"></script> <script type="text/javascript"> // animate 动画函数 $(document).ready(function () { $("div").click(function () { // $("div").animate({"left":"500px"},3000,function () { // alert("动画执行完毕") // })
// $("div").animate({"left":"500px"},3000,function () { // this.animate({"height":"500px"},3000,function () { // alert("动画已执行") // }); // }); $("div").animate({"left":"500px","height":"500px"},3000,function () { alert("执行完毕") }) }) }) </script> </html>
|
4.15 移动端事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>触屏事件</title> <style type="text/css"> div{ width: 250px; height: 250px; line-height: 250px; background-color: #f27c01; text-align: center; } </style> </head> <body> <div>屏幕</div> </body> <script type="text/javascript" src="./js/flexible.js"></script> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript" src="./js/touch.js"></script> <script type="text/javascript"> $(document).ready(function () { $("div").bind("touchmove",function (e) { e.preventDefault() })
function listen_to(el) { $(el).tap(function () { console.log("| tap") }).doubleTap(function () { console.log("double tap") }).swipe(function () { console.log("| swipe") }).swipeLeft(function () { console.log("swipe left") }).swipeUp(function () { console.log("swipe up") }).swipeDown(function () { console.log("swipe down") }) } listen_to("div") }) </script> </html>
|
4.16 自定义Zepto插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div>我是插件</div> </body> <script type="text/javascript" src="./js/zepto.js"></script> <script type="text/javascript"> ;(function ($) { $.fn.color = function(option){ var options = $.extend({ col:"blue", fz:"20px" },option);
this.css("color",options.col); this.css("fontSize",options.fz);
return this } })(Zepto); $('div').color() </script> </html>
|
五 参考
- 博客园—Zepto入门详解
- Zepto.js API 中文版
- Zepto官网
- Github-Zepto