(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));
相关推荐
Zepto的核心设计理念是对jQuery的精简版本,提供了类似于jQuery的API,用于处理DOM操作、事件处理、动画效果等。在"7天日历左右切换"这个组件中,Zepto.js提供了基础的DOM操作和事件绑定功能。 2. **日历显示**: ...
本压缩包文件“reading-zepto, 读 Zepto 源码,分析 Zepto 源码.zip”包含了一个名为"reading-zepto-master"的目录,里面很可能包含了阅读和分析Zepto源码的相关材料,如文档、示例和源代码本身。 在深入阅读和分析...
在这个"zepto.js手机移动端城市选择插件代码"中,我们可以看到一个针对移动设备优化的城市选择功能,它省去了用户需要先选择省份再选择城市的步骤,提高了用户体验。 1. **zepto.js核心概念**: - Zepto.js的核心...
8. **扩展性**:开发者可以通过插件系统扩展zepto.js的功能,社区提供了大量插件,涵盖了表单处理、滚动、轮播图等多种功能。 9. **API一致性**:zepto.js的API设计尽量与jQuery保持一致,这意味着如果你已经熟悉...
在JavaScript领域,有许多库提供了实现这一功能的方法,其中"lazyload-zepto"就是针对Zepto.js框架的一个插件。 Zepto.js 是一个轻量级的JavaScript库,设计风格和API与jQuery类似,但在移动端有着更好的性能表现。...
本文将深入探讨一个名为"travel-zepto"的项目,它是一个针对个人学习记录的实践案例,通过重新键入代码,旨在理解和复现Zepto库的初始版本——v0.1。Zepto是一个轻量级的JavaScript库,它的目标是为移动设备提供类似...
wlt-zepto 构建一个 webpack 版本的 zepto 对于原始的 Zepto,它在这里安装 npm install wlt-zepto用法 var Zepto = require ( 'wlt-zepto' ) ;
本文将深入探讨"zepto手机端日期时间选择代码",它是一个集成星期显示的日期和时间选择器插件。 首先,我们需要了解Zepto.js的基础知识。Zepto.js 是一个针对现代高级浏览器的JavaScript库,它的目标是提供类似于...
zepto手机端快捷环形导航菜单特效代码,非常不错的JS导航菜单特效,基于zepto实现,效果很不错点击展开菜单再点击隐藏菜单,菜单固定在页面,页面滚动菜单位置不变,很适合放些快捷功能按钮如打电话、发短信等功能...
"手机高仿安卓提示 - Zepto版"是针对这一需求而设计的一个解决方案,它旨在模仿Android系统的原生提示效果,但使用了轻量级的JavaScript库Zepto来实现。Zepto因其与jQuery类似的API而被广泛采用,特别是在移动端,...
nd-zepto mobile $ library 安装 $ spm install nd-zepto --save 使用 var Zepto = require('nd-zepto'); // use Zepto 开发 本地 Web 服务 grunt 浏览器中访问 生成/查看 API 文档 grunt doc grunt 浏览器中访问 ...
新zepto 使用延迟构建 zepto 的浏览器版本 对于原始的 Zepto,它在这里 安装 npm install neo-zepto 用法 var Zepto = require ( 'neo-zepto' ) ;
实现效果: 如今非常流行的HTML5页面展现形式,特别是在一些微信应用... 方式大都采用如此方式,今天我们提供大家一款这种页面特效,支持手机端触屏向上滑动,页面非 常流畅,基于zepto,轻量级框架,大家可以看看。
最近做webAPP应用用到一些touch事件,找了很多touch的库(包括zepto的touch模块),在手机上测试都是有各种各样的问题,要么就滑不动,要么只能左右滑动不能上下滑动等,终于找到一个好用强大的touch库,但是只有...
5. **动画效果**: Zepto提供了一系列的动画方法,如`.fadeIn()`, `.slideToggle()`等,通过CSS3实现平滑的过渡效果,提升用户体验。 6. **插件扩展**: Zepto具有良好的可扩展性,可以通过`.extend()`方法创建自定义...
Web_使用pinchzoom插件实现图片手势缩放. 效果描述: 一个基于jQuery的插件——Pinchzoom.js 可以实现移动网页中的图片放大或者缩小,用手指控制即可 当然,其中的jQuery完全可以换成zepto.js
这个压缩包"zepto.js手机端网页上下手指滑动图片切换效果代码.zip"包含了使用zepto.js实现在手机网页上通过上下滑动手势切换图片的代码示例,同时也支持音乐播放功能,适应各种手机屏幕尺寸。 在移动设备上,触摸...
下面这个系列是官方源码编译的,可以方便测试代码 zepto1.js模块包括zepto事件ajax zepto2.js模块包括zepto事件ajax回调被推迟 zepto3.js模块包括Zepto事件fx fx_meshods zepto.js上面所有模块的集合注:执行的...
定制Zepto构建 我们为正式Zepto添加以下事实 添加所需的模块,包括zepto event ajax form ie detect fx fx_methods data selector touch gesture 删除窗口全局变量 添加浏览器支持
本文将深入探讨"zepto-cookie-master"这个项目,它是一个专门用于处理Cookie操作的Zepto插件。 Cookie是Web开发中一个重要的技术,用于存储客户端的小量数据,比如用户设置、会话信息等。在Zepto库中,如果没有专门...