移动Web特效开发

作者: 溺于眼里星河 | 来源:发表于2019-02-27 11:11 被阅读0次

    一、移动上的事件

    1.触摸事件

    常用触摸事件

    事件 描述
    touchstart 手指刚接触屏幕时触发
    touchmove 手指在屏幕上移动时触发
    touchend 手指从屏幕上移开时触发
    touchcancel 当系统停止跟踪触摸的时候触发
    实例

    span.addEventListener('touchstart',function(){
    div.style.display="block";
    },false);

    addEventListener是一个侦听事件并处理相应事件的函数。一般有三个参数:第一个是事件的类型,第二个是侦听到事件后处理事件的函数,第三个是事件捕获(只有两个值,true或false(为true优先触发自己的,false优先触发别的))。

    除了常用的DOM属性,触摸事件还包括下列三个用于跟踪触摸的属性:

    touches:表示当前跟踪的触摸操作的touch对象的数组。
    1.当一个手指在触屏上时,event.touches.length=1。
    2.当两个手指在触屏上时,event.touches.length=2。以此类推

    changedTouches:导致触摸事件被触发的触摸点数组。

    targetTouches:特定于事件目标的touch对象数组。

    触摸事件坐标

    属性 描述
    clicntX 触摸目标在视口中的X坐标
    clientY 触摸目标在视口中的Y坐标
    identfier 标识触摸的唯一ID
    pageX 触摸目标在页面中的X坐标
    pageY 触摸目标在页面中的Y坐标
    screenX 触摸目标在屏幕中的X坐标
    screenY 触摸目标在屏幕中的Y坐标
    target 触摸的DOM节点目标

    表中这些属性的使用方法如下代码所示:

    //如果需要,用pageX或pageY代替clientX或clientY
    var touch = e.changedTouches[0];
    var coorX=touch.clientX;
    var coorY=touch.clientY;
    }
    

    clientX/Y和pageX/Y的区别在于,前者相对于视觉视口的左上角,后者相对于布局视口的左上角,布局视口是可以滚动的。具体用在那组坐标取决于想做什么。

    二、Zepto框架

    1.Zepto概述

    Zepto.js是一个轻量的js库,它与jQuery有类似的API。
    zepto的设计目的是不到10K的通用库,快速下载,有一个熟悉的api-->精力专注在开发上。
    流行起来的原因:轻量;只支持现代浏览器;非常方便的搭配其他框架(phoneGap)来编写代码;优秀的源代码,性能良好。
    zepto和jQuery的对比:
    浏览器兼容:zepto偏移动端,jQuery偏PC端;
    文件大小:zepto 10k  jQuery 30k ;
    部分API接口:参数和执行结果有可能不一致;

    生态圈:jQuery更好;
    核心库:zepto核心库的性能要比jQuery优秀;

    2.Zepto和jQuery的区别
    2-1

    正对移动端程序,Zepto有一些基本的触摸事件可以用来坐触摸屏交互,Zepto不支持IE浏览器。

    2-2

    Dom操作的区别:添加id时jQuery不会生效,而Zepto会生效。

    2-3

    事件触发的区别:使用 jQuery 时 load 事件的处理函数不会执行;使用 Zepto 时 load 事件的处理函数会执行。

    2-4

    事件委托的区别:在Zepto中,当a被点击后,依次弹出了内容为”a事件“和”b事件“,说明虽然事件委托在.a上可是却也触发了.b上的委托。但是在 jQuery 中只会触发.a上面的委托弹出”a事件“。Zepto中,document上所有的click委托事件都依次放入到一个队列中,点击的时候先看当前元素是不是.a,符合则执行,然后查看是不是.b,符合则执行。而在jQuery中,document上委托了2个click事件,点击后通过选择符进行匹配,执行相应元素的委托事件。

    2-5

    width()和height()的区别:Zepto由盒模型(box-sizing)决定,用.width()返回赋值的width,用.css('width')返回加border等的结果;jQuery会忽略盒模型,始终返回内容区域的宽/高(不包含padding、border)。

    2-6

    offset()的区别:Zepto返回{top,left,width,height};jQuery返回{width,height}。

    2-7

    Zepto无法获取隐藏元素宽高,jQuery 可以。

    2-8

    Zepto中没有为原型定义extend方法而jQuery有。

    2-9

    Zepto 的each 方法只能遍历 数组,不能遍历JSON对象。

    2-10

    Zepto在操作dom的selected和checked属性时尽量使用prop方法,在读取属性值的情况下优先于attr。Zepto获取select元素的选中option不能用类似jQuery的方法(美元符号)('option[selected]'),因为selected属性不是css的标准属性。应该使用(美元符号)('option').not(function(){ return !this.selected })。

    3.Zepyo常用的方法和属性
    3-1.$()

    通过执行css选择器包装dom节点,创建元素或者从一个html片段来创建一个Zepto对像。
    Zepto集合是一个类似数组的对象,它具有链式方法来操作它指向的dom。除了--(美元符号)对象上的直接方法外(如:extend),文档对象中的所有方法都是集合方法。

    如果选择器中存在content参数(css选择器、dom或者Zepto集合对象),那么旨在所给的节点背景下进行css选择器;这个功能有点像使用(美元符号)(context).find(selector)。
    可以通过一个html字符串片段来创建一个dom节点。也可以通过给定一组属性映射来创建节点。最快的创建元素时使用<div>或<div/>形式。

    3-2.addClass

    addClass(name)
    为每个匹配的元素添加指定的class类名,多个class类名通过空格分隔。

    3-3.attr
    attr(name)
    attr(name, value)
    attr(name, function(index, oldValue){...})
    attr({name:value,name2:value2,...})
    

    读取或设置dom的属性。如果没有给定value参数,则读取Zepto对象集合第一个元素属性值。当给定了value参数,则设置Zepto对象集合中所有元素的属性值。当value参数为null,那么这个属性将被移除(类似removeAttr),多个属性以通过对象值的方式进行设置。

    3-4.has
    has(selector)
    has(node)
    

    判断当前Zepto对象集合的子元素是否有符合选择器的元素,或者是否包含指定的dom节点,如果有,则返回新的Zepto集合对象,该对象过滤掉不含有选择器匹配元素或者不含有指定dom节点的对象。

    $('ol>li').has('a[href]')
    
    3-5.hasClass
    hasClass(name)
    

    检查Zepto对象集合中是否含有指定元素的class,代码如下所示。

      <ul>
        <li>list item 1</li>
        <li class="liTwo">list item 2</li>
        <li>list item 3</li>
      </ul>
      <p>a paragrapg</p>
      <script>
        $("li").hasClass("liTwo");      //=>  true
      </script>
    
    3-6.toggle
    toggle([setting])
    

    显示或隐藏。如果setting为true,相当于show方法;如果setting为false,相当于hide方法。

    var input=$('input[type=text]')
    $('#too_long').toggle(input.val().length>140)
    
    3-7.toggleClass
    1(names, [setting])
    

    在匹配的元素集合中的每个元素上添加或删除一个或多个样式类。如果class的名称存在,则删除它;如果不存在则添加它。如果setting的值为真,这个功能类似于addClass;如果为假,这个功能类似与removeClass。

    3-8.closest
    closest(selector, [context])
    closest(collection)
    closest(element)
    

    从元素本身开始,主机向上级元素匹配,并返回最先匹配selector的祖先元素。如果context节点参数存在,那么只考虑节点的后代。这个方法与parents(selector
    )有点想象,但它只返回最先匹配的祖先元素。

    4.Zepto独有特性
    4-1.CSS transform
    translate(X|Y|Z|3d)
    rotate(X|Y|Z|3d)
    scale(X|Y|Z)
    skew(X|Y)
    
    4-2.touch

    由于在移动端,触摸事件肯定时必不可少的,因此Zepto也专门提供了几个触摸事件。

    4-2-1.tap

    元素被触摸的时候触发

    4-2-2.singleTap and doubleTap

    这一对事件可以用来检测元素上的单击和双击(如果不需要检测则用tap代替)

    4-2-3.longTap

    当一个元素被按住超过750ms时触发。

    4-2-4.swipe,swipeLeft,swipeRight,swipeUp,swipeDown

    当元素被划过时触发(可以给定位方向)

    相关文章

      网友评论

        本文标题:移动Web特效开发

        本文链接:https://www.haomeiwen.com/subject/nudayqtx.html