`

手机端左滑效果 - zepto插件代码

阅读更多
(function (window, document, $, undefined) {
    "use strict";
    var startPoint,
        $currentEl,
        $fixEl,
        moving = false,
        $rootEl = $(document.documentElement),
        openSwipeEl = null;

    function touchMove(event) {
        var touch = event.touches[0],
            diffX = touch.clientX - startPoint.x,
            diffY = Math.abs(touch.clientY - startPoint.y),
            fixElWidth = $fixEl.width(),
            translated,
            translatedLeft = ($currentEl.data("translatedLeft") || 0) + diffX;

        if (translatedLeft > 0) {
            translatedLeft = translatedLeft / 10;
        } else if (translatedLeft < -fixElWidth) {
            translatedLeft = -fixElWidth;
        }

        $currentEl.data("isShow", translatedLeft < -fixElWidth * 0.5);

        translated = "translate3d(" + translatedLeft + "px,0,0)";


        // 阻止默认行为,用于修复android4下不会触发touchend事件的bug,针对android且为左滑状态时,才阻止默认事件
        if($$.isAndroid() && diffX < -5 && diffY < 5){
            $currentEl.css({
                "-webkit-transform": translated,
                transform: translated
            });
            event.preventDefault();
        }else if(!$$.isAndroid()){
            $currentEl.css({
                "-webkit-transform": translated,
                transform: translated
            });
        }
        openSwipeEl = $currentEl;
    }

    function touchEnd(event) {
        $rootEl.off("touchmove", touchMove);
        $rootEl.off("touchend", touchEnd);
        $rootEl.off("touchcancle", touchEnd);
        moving = false;
        if (null === event) {
            return;
        }
        var translatedLeft = $currentEl.data("translatedLeft"),
            fixElWidth = $fixEl.width(),
            translated,
            halfFixElWidth = fixElWidth / 2;
        if ($currentEl.data("isShow")) {
            translatedLeft = -fixElWidth;
            openSwipeEl = $currentEl;
        } else {
            translatedLeft = 0;
            openSwipeEl = null;
        }
        $currentEl.data("translatedLeft", translatedLeft);
        translated = translatedLeft ? "translate3d(" + translatedLeft + "px,0,0)" : "";

        $currentEl.css({
            "-webkit-transform": translated,
            transform: translated
        });

        $currentEl.addClass('anim');
    }

    function touchStart(event) {
        var touches = event.touches;
        $currentEl = $(event.currentTarget);
        $fixEl = $currentEl.children("*[data-swipe-item-fixel]");
        if (touches.length > 1) {
            return;
        }
        startPoint = {
            x: touches[0].clientX,
            y: touches[0].clientY
        };

        $currentEl.removeClass('anim');

        $rootEl.on("touchmove", touchMove);
        $rootEl.on("touchend", touchEnd);
        $rootEl.on("touchcancle", touchEnd);
    }

    $.fn.swipeMenu = function () {
        var $el = $(this);
        $el.delegate("*[data-swipe-item]", "touchstart", touchStart);
    };

    function hideSwipe() {
        var translated = "";
        //openSwipeEl = $("*[data-swipe-item]");
        if (openSwipeEl) {
            openSwipeEl
                .css({
                    "-webkit-transform": translated,
                    transform: translated
                })
                .data("isShow", 0)
                .data("translatedLeft", 0);

            openSwipeEl = null;
        }
    }
    $(document).delegate('body', 'touchstart', function () {
        hideSwipe();
    });
    //$('body').delegate('*[data-swipe-item]', 'touchstart', function () {
    //    //var transform = this.style.webkitTransform;
    //
    //    //if (!transform || transform == 'translate3d(0px, 0px, 0px)') {
    //    hideSwipe();
    //    //} else {
    //
    //    //}
    //});


}(window, document, Zepto));
分享到:
评论

相关推荐

    7天日历左右切换--zepto

    Zepto的核心设计理念是对jQuery的精简版本,提供了类似于jQuery的API,用于处理DOM操作、事件处理、动画效果等。在"7天日历左右切换"这个组件中,Zepto.js提供了基础的DOM操作和事件绑定功能。 2. **日历显示**: ...

    reading-zepto, 读 Zepto 源码,分析 Zepto 源码.zip

    本压缩包文件“reading-zepto, 读 Zepto 源码,分析 Zepto 源码.zip”包含了一个名为"reading-zepto-master"的目录,里面很可能包含了阅读和分析Zepto源码的相关材料,如文档、示例和源代码本身。 在深入阅读和分析...

    zepto.js手机移动端城市选择插件代码

    在这个"zepto.js手机移动端城市选择插件代码"中,我们可以看到一个针对移动设备优化的城市选择功能,它省去了用户需要先选择省份再选择城市的步骤,提高了用户体验。 1. **zepto.js核心概念**: - Zepto.js的核心...

    javascript框架- zepto.js

    8. **扩展性**:开发者可以通过插件系统扩展zepto.js的功能,社区提供了大量插件,涵盖了表单处理、滚动、轮播图等多种功能。 9. **API一致性**:zepto.js的API设计尽量与jQuery保持一致,这意味着如果你已经熟悉...

    lazyload-zepto:一个使 imgs 懒惰加载 zepto 的插件

    在JavaScript领域,有许多库提供了实现这一功能的方法,其中"lazyload-zepto"就是针对Zepto.js框架的一个插件。 Zepto.js 是一个轻量级的JavaScript库,设计风格和API与jQuery类似,但在移动端有着更好的性能表现。...

    travel-zepto:travel-zepto 运动

    本文将深入探讨一个名为"travel-zepto"的项目,它是一个针对个人学习记录的实践案例,通过重新键入代码,旨在理解和复现Zepto库的初始版本——v0.1。Zepto是一个轻量级的JavaScript库,它的目标是为移动设备提供类似...

    wlt-zepto:构建一个 webpack 版本的 zepto

    wlt-zepto 构建一个 webpack 版本的 zepto 对于原始的 Zepto,它在这里安装 npm install wlt-zepto用法 var Zepto = require ( 'wlt-zepto' ) ;

    zepto手机端日期时间选择代码.zip

    本文将深入探讨"zepto手机端日期时间选择代码",它是一个集成星期显示的日期和时间选择器插件。 首先,我们需要了解Zepto.js的基础知识。Zepto.js 是一个针对现代高级浏览器的JavaScript库,它的目标是提供类似于...

    zepto手机端快捷环形导航菜单特效代码

    zepto手机端快捷环形导航菜单特效代码,非常不错的JS导航菜单特效,基于zepto实现,效果很不错点击展开菜单再点击隐藏菜单,菜单固定在页面,页面滚动菜单位置不变,很适合放些快捷功能按钮如打电话、发短信等功能...

    手机高仿安卓提示 zepto版

    "手机高仿安卓提示 - Zepto版"是针对这一需求而设计的一个解决方案,它旨在模仿Android系统的原生提示效果,但使用了轻量级的JavaScript库Zepto来实现。Zepto因其与jQuery类似的API而被广泛采用,特别是在移动端,...

    nd-zepto:移动$ libray

    nd-zepto mobile $ library 安装 $ spm install nd-zepto --save 使用 var Zepto = require('nd-zepto'); // use Zepto 开发 本地 Web 服务 grunt 浏览器中访问 生成/查看 API 文档 grunt doc grunt 浏览器中访问 ...

    neo-zepto:移动neo框架使用

    新zepto 使用延迟构建 zepto 的浏览器版本 对于原始的 Zepto,它在这里 安装 npm install neo-zepto 用法 var Zepto = require ( 'neo-zepto' ) ;

    基于zepto的微信手机端微场景HTML5页面特效.zip

    实现效果: 如今非常流行的HTML5页面展现形式,特别是在一些微信应用... 方式大都采用如此方式,今天我们提供大家一款这种页面特效,支持手机端触屏向上滑动,页面非 常流畅,基于zepto,轻量级框架,大家可以看看。

    TouchSwipe-Zepto-Plugin:TouchSwipe是一个zepto插件,可与Zepto一起在触摸输入设备(如iPad,iPhone等)上使用。

    最近做webAPP应用用到一些touch事件,找了很多touch的库(包括zepto的touch模块),在手机上测试都是有各种各样的问题,要么就滑不动,要么只能左右滑动不能上下滑动等,终于找到一个好用强大的touch库,但是只有...

    cc-zepto:稍微看看zepto的原始代码

    5. **动画效果**: Zepto提供了一系列的动画方法,如`.fadeIn()`, `.slideToggle()`等,通过CSS3实现平滑的过渡效果,提升用户体验。 6. **插件扩展**: Zepto具有良好的可扩展性,可以通过`.extend()`方法创建自定义...

    HTML-手机端-图片放大-手动缩放-示例(pinchzoom插件实现)

    Web_使用pinchzoom插件实现图片手势缩放. 效果描述: 一个基于jQuery的插件——Pinchzoom.js 可以实现移动网页中的图片放大或者缩小,用手指控制即可 当然,其中的jQuery完全可以换成zepto.js

    zepto.js手机端网页上下手指滑动图片切换效果代码.zip

    这个压缩包"zepto.js手机端网页上下手指滑动图片切换效果代码.zip"包含了使用zepto.js实现在手机网页上通过上下滑动手势切换图片的代码示例,同时也支持音乐播放功能,适应各种手机屏幕尺寸。 在移动设备上,触摸...

    DIY-zepto:一步一步DIY zepto库,研究zepto源码博客系列代码-源码客

    下面这个系列是官方源码编译的,可以方便测试代码 zepto1.js模块包括zepto事件ajax zepto2.js模块包括zepto事件ajax回调被推迟 zepto3.js模块包括Zepto事件fx fx_meshods zepto.js上面所有模块的集合注:执行的...

    browserify-zepto:自定义zepto构建

    定制Zepto构建 我们为正式Zepto添加以下事实 添加所需的模块,包括zepto event ajax form ie detect fx fx_methods data selector touch gesture 删除窗口全局变量 添加浏览器支持

    zepto-cookie-master

    本文将深入探讨"zepto-cookie-master"这个项目,它是一个专门用于处理Cookie操作的Zepto插件。 Cookie是Web开发中一个重要的技术,用于存储客户端的小量数据,比如用户设置、会话信息等。在Zepto库中,如果没有专门...

Global site tag (gtag.js) - Google Analytics