jquery 触屏滑动+定时滚动

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta name="applicable-device" content="mobile" />
<meta content="yes" name="apple-mobile-web-app-capable"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta content="telephone=no" name="format-detection"/>
<title>无标题文档</title>
</head>
<style>
*{ font-size:14px; padding:0; margin:0;}
.tab{ margin:10px;}
.tit{ height:30px; width:100%; border:1px solid #ccc; line-height:30px;}
.tit span{ display:inline-block; height:30px; line-height:30px; width:24%; border-right:1px solid #ccc; text-align:center}
.tit .cur{ color:#fff; background-color:#ccc;}
ul{overflow:hidden;zoom:1; width:300px; float:left}
ul li{ height:30px; line-height:30px; white-space:nowrap; overflow:hidden}
.tab-wrap{ position:relative; height:150px; overflow:hidden;zoom:1;}.tab-main{ position:absolute; left:0px; top:0px;}
</style>
<body>

<div class="tab" id="tap">
    <div class="tit"><span class="cur">新闻</span><span>体育</span><span>娱乐</span><span>文化</span></div>
    <div class="tab-wrap">
        <div class="tab-main">
            <ul class="current">
                <li>新闻新闻新闻新闻新闻新闻新闻新闻新闻</li>
                <li>新闻新闻新闻新闻新闻新闻新闻新闻新闻</li>
                <li>新闻新闻新闻新闻新闻新闻新闻新闻新闻</li>
                <li>新闻新闻新闻新闻新闻新闻新闻新闻新闻</li>
                <li>新闻新闻新闻新闻新闻新闻新闻新闻新闻</li>
            </ul>
            <ul>
                <li>体育体育体育体育体育体育体育体育体育</li>
                <li>体育体育体育体育体育体育体育体育体育体育体育体育</li>
                <li>体育体育体育体育体育体育体育体育体育体育</li>
                <li>体育体育体育体育体育体育体育体育体育体育</li>
                <li>体育体育体育体育体育体育体育体育体育体育体育</li>
            </ul>
            <ul>
                <li>娱乐娱乐娱乐娱乐娱乐娱乐娱乐</li>
                <li>娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐</li>
                <li>娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐</li>
                <li>娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐</li>
                <li>娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐娱乐</li>
            </ul>
            <ul>
                <li>文化文化文化文化文化文化文化文化文化文化文化</li>
                <li>文化文化文化文化文化文化文化文化文化文化</li>
                <li>文化文化文化文化文化文化文化文化文化文化</li>
                <li>文化文化文化文化文化文化文化文化文化文化文化文化</li>
                <li>文化文化文化文化文化文化文化文化文化文化</li>
            </ul>
        </div>
    </div>
</div>

<script src="js/jquery.js"></script>
<script>

$(‘ul‘).width($(window).width()-20);
var oulWidth=$(‘ul‘).width();
var oulLength=$(‘ul‘).length;
var timer=null;
var i=0;
var j=0;
$(‘.tab-main‘).width(oulWidth*oulLength);

$(".tab-main").on("touchstart", function(e) {
    e.preventDefault();
	clearInterval(timer)
    startX = e.originalEvent.changedTouches[0].pageX,
    startY = e.originalEvent.changedTouches[0].pageY;
});
$(".tab-main").on("touchmove", function(e) {
    e.preventDefault();
    moveEndX = e.originalEvent.changedTouches[0].pageX,
    moveEndY = e.originalEvent.changedTouches[0].pageY,
    X = moveEndX - startX,
    Y = moveEndY - startY;
});

$(".tab-main").on("touchend", function(e) {
    e.preventDefault();//阻止默认触屏滑动
    if ( Math.abs(X) > Math.abs(Y) && X > 0 ) { //向左
       if(i==0){
		   i=oulLength-1;
		   $(‘.tab-main ul‘).eq(i).css({‘position‘:‘relative‘,‘left‘:-oulWidth*oulLength+‘px‘});
	   }else{
		   i--
	   };
	   j--;
	   $(‘.tab-main‘).animate({‘left‘:-j*oulWidth});
	   $(‘.tit span‘).eq(j).addClass(‘cur‘).siblings().removeClass(‘cur‘);
       $(‘.tab-main‘).stop().animate({‘left‘:-j*oulWidth+‘px‘},function(){
		   if(i==oulLength-1){
			   $(‘.tab-main ul‘).eq(oulLength-1).css({‘position‘:‘static‘});
			   $(‘.tab-main‘).css(‘left‘,-oulWidth*(oulLength-1));
			   j=oulLength-1;
		   };
	   });
    }else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {//向右
       rightAuto()
    }else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {//向下
        alert("top 2 bottom");
    }else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {//向上
        alert("bottom 2 top");
    }else{//点击
        alert("just touch");
    };
	timer=setInterval(rightAuto,5000);
});
	//右滚动函数
    function rightAuto(){
		 if(i==oulLength-1){
		  i=0;
		  $(‘.tab-main ul‘).eq(0).css({‘position‘:‘relative‘,‘left‘:oulWidth*oulLength+‘px‘});
	   }else{
		  i++
	   };
	   j++
	   $(‘.tab-main‘).animate({‘left‘:-j*oulWidth});
	   $(‘.tit span‘).eq(i).addClass(‘cur‘).siblings().removeClass(‘cur‘);
       $(‘.tab-main‘).stop().animate({‘left‘:-j*oulWidth+‘px‘},function(){
		   if(i==0){
			   $(‘.tab-main ul‘).eq(0).css({‘position‘:‘static‘});
			   $(‘.tab-main‘).css(‘left‘,0);
			   j=0;
		   };
	   })
	};
	//定时轮播
	timer=setInterval(rightAuto,5000);

</script>
</body>
</html>

 

步骤解释:

 1.主要运用touchstart,touchmove,touchend三个事件;当touched结束时根据滑动的距离执行判断

Math.abs(X) > Math.abs(Y) 是向左右,向右,上,下,当然写在次出还有些bug,因为滑动屏幕的时候不会很直,会斜上或者斜下,因此加上“&& X < 0 ”判断更准确一些;

2.有了判断结果,然后根据相应的结果写出滑动的效果,此处我觉得和pc写法差别不大;

3. 然后就是定时滚动,此处和pc也不是很大区别,最后一点就是当进行touchstart的时候,clearInterval(timer)清除定时器,当touchend的时候,再进行滚动

ok,在此基本完成

时间: 2024-12-23 13:05:23

jquery 触屏滑动+定时滚动的相关文章

朋友圈常见单页面触屏滑动上下翻屏功能jQuery实现

JS代码(jquery.showup.js): /** * @Creator: Nelson Kuang/Fast Mover * @showup 翻页插件:实现原理,用margin-top来控制页面容器位置来实现上下翻页 * @License:The MIT License (MIT) * @调用方式 $("#container").showup({ startPage: 0,//开始页面 duration:1000//动画持续时间 }) * @Creator: Nelson Kua

JS移动客户端--触屏滑动事件

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件能跟踪到屏幕滑动的每根手指. 以下是四种touch事件 touchstart: //手指放到屏幕上时触发 touchmove: //手指在屏幕上滑动式触发 touchend: //手指离开屏幕时触发 touchcancel: //系统取消touch事件的时候触发,这个好像比较少用 每个触摸事件被触发

JS案例之5——移动端触屏滑动

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件能跟踪到屏幕滑动的每根手指. 以下是四种touch事件 touchstart:     //手指放到屏幕上时触发 touchmove:      //手指在屏幕上滑动式触发 touchend:    //手指离开屏幕时触发 touchcancel:     //系统取消touch事件的时候触发,这个

移动端触屏滑动事件

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件能跟踪到屏幕滑动的每根手指. 以下是四种touch事件 touchstart:     //手指放到屏幕上时触发 touchmove:      //手指在屏幕上滑动式触发 touchend:    //手指离开屏幕时触发 touchcancel:     //系统取消touch事件的时候触发,这个

touch移动触屏滑动事件

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件能跟踪到屏幕滑动的每根手指. 四种touch事件 touchstart 当手指触摸到屏幕时触发,即使已经有一个手指放在了屏幕上也会触发. touchmove 当手指在屏幕上连续滑动时触发,在这个事件发生期间,调用preventDefault()可阻止滚动. touchend 当手指从屏幕上移开时触发

移动端 触屏滑动条菜单(完善版 转)

移动端 触屏滑动条菜单(完善版) 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 8

常用的jquery触屏手机页面特效代码下载

js手机幻灯片代码制作手指滑动手机端图片轮播代码 jQuery移动端页面侧边导航菜单滑出效果代码 jquery.touchswipe.js手机端网页制作触屏滑动导航显示代码 jquery响应式幻灯片插件制作图片弹出手机幻灯片代码 jquery mobiscroll手机日期控件制作手机端日期控件 js手指滑动手机端列表加载动画效果 jquery手机导航菜单仿微信底部菜单代码 jquery html5手机触屏版点击弹出层对话框响应式网页布局代码 js手机端带进度条图片展示触屏滑动效果 jquery

jquery触屏幻灯片

qq群号(html5技术交流):158677025   手机端演示二维码(或直接在手机中输入网址:http://lilinfeng.cncoder.me 浏览效果): 一.前言 去年接触了移动Web开发,做了些手机端的网站及应用,还有些小的微信游戏和活动页面.每个项目里或多或少的都会有一些触屏事件等.其中有两个用到了jquery触屏幻灯片.刚开始的时候也在百度上搜索了一翻,但最终都没有找到合适的,因此就觉得自己写一个了.下面的例子是我在已前的项目里摘出来的,对于触屏本人也不算老鸟,有写的不足的地

移动端touch触屏滑动事件、滑动触屏事件监听!

移动端touch触屏滑动事件.滑动触屏事件监听! 一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1 Apple在iOS 2.0中引入了触摸事件API,Android正迎头赶上这一事实标准,缩小