实例介绍
【实例简介】
【实例截图】
【实例截图】
【核心代码】
//手势滑动
(function($) {
$.fn.move = function(setti) {
var defaultSetti = {
width: 200, //实际显示区域
height: 200, //实际显示区域
x: true, // 横向移动
y: true, //纵向移动
}
setti = $.extend(true, {}, defaultSetti, setti);
return this.each(function() {
var _this = $(this),
s = setti;
var chil = $(".Slide", _this); //触控元素
var startX = 0,
startY = 0; //触摸开始时手势横纵坐标
var temPos = []; //元素当前位置
var oPosition = {}; //触点位置
var wh = []; //元素宽高
var z = 0; //手指滑动时间
var d = {}; //总过滑动距离
var m = 0; //每毫秒滚动距离
//页面加载或发生改变
$(window).bind('resize load', function() {
b();
wh.w = chil.width();
wh.h = chil.height();
if(wh.w < s.width) {
s.width = wh.w
}
if(wh.h < s.height) {
s.height = wh.h
}
});
if(_this.css("position") == "static") { //检测是否定位
_this.css("position", "relative")
}
//获取滑动时间
function autoMo() {
z ;
}
//停止计算
function b() { //绑定三个事件
chil.get(0).addEventListener("touchstart", c, false)
chil.get(0).addEventListener('touchmove', y, false);
chil.get(0).addEventListener('touchend', t, false);
}
function h(e) { //获取触摸点
var touches = e.changedTouches,
l = touches.length,
touch, tagX, tagY;
for(var i = 0; i < l; i ) {
touch = touches[i];
tagX = touch.clientX;
tagY = touch.clientY;
}
oPosition.x = tagX;
oPosition.y = tagY;
if(!z) {
d.x = tagX;
d.y = tagY;
}
}
function c(e) { //触摸开始
h(e);
startX = oPosition.x;
startY = oPosition.y;
temPos.x = chil.position(_this).left;
temPos.y = chil.position(_this).top;
animate(chil,0);
}
function y(e) { //触摸移动
e.preventDefault();
h(e);
autoMo();
var moveX = oPosition.x - startX;
var moveY = oPosition.y - startY;
if(s.x) {
chil.css({
left: temPos.x moveX
});
}
if(s.y) {
chil.css({
top: temPos.y moveY
});
}
}
function t(e) { //触摸结束
temPos.x = chil.position().left;
temPos.y = chil.position().top;
if(s.x) {
var wwl = (d.x - oPosition.x) / z*20;
_left(chil,wwl);
}
if(s.y) {
var wwt = (d.y - oPosition.y) / z*20;
_top(chil,wwt);
}
z = 0; //初始化触控时间
}
function animate(obj, num) {
clearInterval(obj.timer);
clearInterval(obj.timers);
if(!num){
return;
}
}
function _top(obj,num){
clearInterval(obj.timer);
if(!num){
return;
}
var ti=0;
if(num>0){
obj.timer = setInterval(function() {
var flag = true; //清楚定时器的标识
var step = num / 20;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
obj.css("top",temPos.y - step - ti);
ti=ti step;
num=num-step;
if(num<0 || -temPos.y step ti > wh.h - s.height){
clearInterval(obj.timer);
}
if(-temPos.y - step - ti > wh.h - s.height){
doAnimt(-wh.h s.height)
}
}, 10)
}else{
obj.timer = setInterval(function() {
var step = num / 20;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
obj.css("top",temPos.y - step - ti);
ti=ti step;
num=num-step;
if(num>0 || temPos.y - step - ti > 0){
clearInterval(obj.timer);
}
if(temPos.y - step - ti > 0){
doAnimt(0)
}
}, 10)
}
}
function _left(obj,num){
clearInterval(obj.timers);
if(!num){
return;
}
var til=0;
if(num>0){
obj.timers = setInterval(function() {
var stepl = num / 20;
stepl = stepl > 0 ? Math.ceil(stepl) : Math.floor(stepl);
obj.css("left",temPos.x - stepl - til);
til=til stepl;
num=num-stepl;
if(num<0 || -temPos.x stepl til > wh.w - s.width){
clearInterval(obj.timers);
}
if(-temPos.x - stepl - til > wh.w - s.width){
doAniml(-wh.w s.width)
}
}, 10)
}else{
obj.timers = setInterval(function() {console.log(num);
var stepl = num / 20;
stepl = stepl > 0 ? Math.ceil(stepl) : Math.floor(stepl);
obj.css("left",temPos.x - stepl - til);
til=til stepl;
num=num-stepl;
if(num>0 || temPos.x - stepl - til > 0){
clearInterval(obj.timers);
}
if(temPos.x - stepl - til > 0){
doAniml(0)
}
console.log(num);
}, 10)
}
}
function doAnimt(iTarget) {
chil.animate({
top: iTarget
}, {
duration: 300,
queue: false
});
}
function doAniml(iTarget) {
chil.animate({
left: iTarget
}, {
duration: 300,
queue: false
});
}
try {
if(typeof(eval(_data)) == "function") {
_data(); //可用于传输内部数据
}
} catch(e) {}
});
}
})(jQuery);
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论