`

左滑插件

 
阅读更多

用法:

给需要添加左滑功能的元素添加以下属性:

data-swipe-item

给左滑显示出来的元素添加如下属性:

data-swipe-item-fixel

源码:

 

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

    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
        });

        $callback();
        $currentEl.addClass('anim');
    }

    function touchStart(event,callback) {

        var touches = event.touches;
        $currentEl = $(event.currentTarget);
        $callback = function(){
            callback($currentEl);
        };
        $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 (callback) {
        var $el = $(this);
        $el.delegate("*[data-swipe-item]", "touchstart", (function(){
            return function(event){
                touchStart.apply($el, [event, callback]);
            }
        })());
    };

    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();
    });
    

}(window, document, Zepto));

 

 

 

 

分享到:
评论

相关推荐

    android左滑插件

    在Android应用开发中,"左滑插件"通常是指一种能够实现手势操作,特别是左侧滑动触发特定功能的UI组件或库。这种插件对于提高用户界面的交互性和用户体验至关重要,因为它提供了直观且便捷的操作方式。下面将详细...

    android仿qq、微信左滑删除listview(不使用外部插件完成)

    以上就是不使用外部插件实现Android上QQ和微信样式左滑删除ListView的详细步骤。通过自定义布局、手势识别以及Adapter的优化,我们可以灵活地定制滑动效果,包括添加多个按钮或其他操作。这个过程需要对Android的...

    微信小程序左滑操作的自定义组件,小程序开发项目常用WeChatApp-slip-master.zip

    在微信小程序的开发中,有时候我们需要实现类似手机应用常见的左滑操作,比如删除、标记等。这个名为"WeChatApp-slip-master"的压缩包提供了一个自定义组件,专门用于实现这样的功能。下面将详细讲解微信小程序左滑...

    左滑删除html5

    在HTML5技术中,"左滑删除"功能通常用于移动端Web应用,模仿苹果iOS设备上的交互体验,使得用户可以通过向左滑动元素来触发删除或者其他操作。这种效果常见于邮件应用、任务管理器或者任何需要用户快速处理列表项的...

    Html5 js 安卓左滑删除Demo

    JavaScript和jQuery Mobile插件则为Web应用提供了实现左滑删除的另一种途径。HTML5提供了离线存储、拖放、媒体元素等新特性,使得Web应用可以接近原生应用的体验。jQuery Mobile是一个轻量级的框架,它简化了移动...

    左滑删除.zip

    对于"左滑删除",可能有现成的jQuery插件,如`swipeToDelete`或`leftSwipe`等,它们通常包含事件监听、计算滑动距离、动画效果和回调函数等核心功能。 2. **事件处理**:在JavaScript中,我们需要监听触摸屏幕的...

    android实现简单左滑删除控件

    "Android 实现简单左滑删除控件" Android 实现简单左滑删除控件是 Android 开发中常见的交互控件之一,该控件允许用户通过左滑操作删除某个项目。下面将详细介绍 Android 实现简单左滑删除控件的知识点。 知识点 ...

    unity的滑动插件-- SwipeControl

    // 处理左滑事件,例如切换到前一个页面 } void HandleSwipeRight() { // 处理右滑事件,例如切换到后一个页面 } } ``` 在实际项目中,SwipeControl插件不仅可以用于页面切换,还可以应用于各种需要滑动手势...

    JQuery轮播插件

    **jQuery轮播插件详解** 在网页设计中,图片轮播是一种常见的展示方式,它可以高效地展示多张图片,节省空间并提升用户体验。基于jQuery的轮播插件因其丰富的功能和简单易用的API,成为了开发者们首选的实现工具。...

    Unity3d手势触摸插件 Fingers - Touch Gestures for Unity 2.5.6

    - **滑动手势**:通过识别用户的滑动手势(如左滑、右滑等),可以在游戏中实现翻页、切换界面等功能。 - **缩放手势**:通过检测两个手指之间的距离变化来实现放大缩小的操作,适用于地图缩放、图片浏览等场景。 - ...

    IOS9.3.3 越狱插件 分享

    1. 手势插件使用功能包括:状态栏左滑切换应用、右滑截屏、底部上滑开启后台等。 2. 控制中心的插件CCSetting被作者认为已经足够使用,可以进行音乐控制和隐藏不需要的系统应用。作者认为在后台有音乐播放时才会使用...

    swipelistview左滑删除

    Swipelistview左滑删除是Android开发中一种常见的交互设计,它模仿了微信等应用中的功能,让用户可以轻松地通过向左滑动列表项来触发删除或其他操作。这个功能极大地提升了用户界面的交互性和易用性。在Android-...

    精致的H5 列表侧滑组件。H5页面侧滑删除、修改的功能组件。

    在移动设备上,H5页面已经成为展示信息和交互的重要手段,尤其在开发轻量级应用时,H5的灵活性和跨平台性得到了广泛的认可。在H5页面设计中,一个常见的交互元素是列表组件,而其中的侧滑功能则为用户提供了一种便捷...

    使用SwipeMenuListView实现微信、QQ侧滑删除功能

    在Android应用开发中,我们经常需要实现类似微信和QQ中的侧滑删除功能,这能为用户提供便捷的操作方式,快速管理列表中的数据。本教程将详细讲解如何使用SwipeMenuListView库来实现这一功能。 ...

    【JavaScript源代码】vue移动端实现左滑编辑与删除的全过程.docx

    在Vue.js移动端开发中,有时候我们需要实现类似列表项左滑后显示编辑和删除按钮的功能,这在电商或者信息管理类应用中很常见。本示例将详细介绍如何利用`vue-touch`插件来实现这一功能。 首先,我们安装`vue-touch`...

    五款jQueryMobile官方公认的插件源码

    它使开发者能够通过简单的滑动手势(例如左滑或右滑)来触发特定的事件,如删除、收藏或分享。这种手势控制使得操作更直观,尤其是在移动设备的有限空间内。 4. **Bartender** (bartender-master) Bartender 是一...

    网页模板——jQuery实现的图片左右滑动焦点图插件源码 支持图片自动切换.zip

    4. 用户交互:插件应支持用户手动切换图片,这需要用到事件监听,如`.on('swipeleft', function() {...})`来响应用户的左滑手势,`.on('swiperight', function() {...})`则响应右滑。同时,还可以提供导航按钮让用户...

    微信小程序-微信小程序的相关特效插件

    [x] 左滑取消操作、删除 [x] 单选按钮,复选按钮,on/off开关 [x] checkbox全选/全不选 [x] toast(warning,danger) [x] 横向可滑动tabbar [x] 图片翻页动画 [x] 瀑布流图文 [ ] 自定义...

    jQuery实现的手机触屏滑动图片切换插件swiper.js源码.zip

    通过计算手指在屏幕上的移动距离和方向,插件可以判断用户是要向左滑、向右滑还是进行其他操作,从而实现相应的图片切换效果。 在处理滑动事件的过程中,swiper.js使用了防抖(debounce)和节流(throttle)技术来优化...

    Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码

    年后入职了一家新公司,与前同事交接完之后,发现公司有一个四端的项目(iOS,Android,H5,小程序),iOS和安卓都实现了左滑右滑的效果,而h5和小程序端没实现,询问得知前同事因网上没找到对应的插件,相关博客也...

Global site tag (gtag.js) - Google Analytics