(function($) {
$.fn.lyhucTouchPad = function(options) {
//鼠标X位置
var element=$(this);
var draging = false;
var touchPageWrapper=$("#" + element[0].id + "Wrapper");
var touchPageContent=$("#"+element[0].id+" ."+element[0].id+"Content");
var marginleft=0;//父面板位置
var touchPageContentHeight=touchPageContent.height();
var startTop,startTop;
var startX,startY;
var point={X:0,Y:0};
var currentIndex=0;
var direction=0;
var pageCount=touchPageContent.size();
touchPageWrapper.height((pageCount+1)*touchPageContentHeight); var defaults = {
align:'center',
pager:'#pager',
showmousePoint:true
};
var options = $.extend(defaults, options); //初始化
(function init(){
if(options.align=='center')
{
marginleft=($(window).width()-element.width())/2;
element.css("left",marginleft);
$(options.pager).css("width",marginleft);
}
if(options.align=='right')element.css("right",0);
startLeft=0;
for(var i=0;i<pageCount;i++)
{
if(i==0)
$(options.pager+">div").before("<a href='#' class='current'> </a>");
else
$(options.pager+">div").before("<a href='#' class='point'> </a>");
}
})();
clearEvent = function(){
}
startDrag = function(event)
{
var offset = $(this).offset();
startTop = offset.top;
startY = event.pageY;
$(this)
.stop(true, false)
.mousemove(moveDrag)
.css('cursor','move');
;
draging=true;
}
/*
* div随鼠标移动,由startDrag开启,由enddrag结束
*/
var moveDrag = function(event){
var offset = $(this).offset();
var movepx=event.pageY-startY;
endTop= startTop+movepx;
direction=0;
if(movepx>0 && movepx>=(touchPageContentHeight/6))
direction=1;
else if (movepx<0 && Math.abs(movepx)>=(touchPageContentHeight/6))
direction=-1;
if(options.showmousePoint)$("#mousePoint").text("X="+point.X+" Y="+point.Y+ " offset.top="+movepx+" direction="+direction);
$(this).css("top", endTop-marginleft );
return true;
}
var endDrag = function(event){
if(draging){
$(touchPageWrapper)
.unbind("mousemove",moveDrag)
.css('cursor','auto');
if(direction==1)
currentIndex++
else if(direction==-1)
currentIndex--;
if(currentIndex==1 && (direction==1)) currentIndex=0;
if((Math.abs(currentIndex)+1)>=pageCount && (direction==-1)){currentIndex=(-pageCount+1);}
$(touchPageWrapper).animate({ top: currentIndex*touchPageContentHeight }, "slow");
var currentA=$(options.pager+" a");
$(currentA).attr("class","");
$(currentA).eq(Math.abs(currentIndex)).attr("class","current");
direction=0;
draging=false;
}
}
//初始化事件
return this.each(function(){
var obj = $(this);
obj.bind("mousemove",function(e){
point.X = e.pageX;
point.Y = e.pageY;
}).bind("mouseup",endDrag);
$(touchPageWrapper).bind("mousedown",startDrag)
.bind("click",clearEvent)
.bind("mouseup",endDrag).bind("mouseout",endDrag);
}); };
})(jQuery);这是用div为一页的翻页拖拉效果<div id="slidePageWrapper">
<div class="slidePageContent bgcolor1">
<img src="">
</div>
<div class="slidePageContent bgcolor2">
<img src="">
</div>
</div>我希望能实现一拉没有翻页跟手机看页面一样的效果,但是一直没找出好方法,因为是用的
html要导入的
跪求各位大师帮忙了!!!
$.fn.lyhucTouchPad = function(options) {
//鼠标X位置
var element=$(this);
var draging = false;
var touchPageWrapper=$("#" + element[0].id + "Wrapper");
var touchPageContent=$("#"+element[0].id+" ."+element[0].id+"Content");
var marginleft=0;//父面板位置
var touchPageContentHeight=touchPageContent.height();
var startTop,startTop;
var startX,startY;
var point={X:0,Y:0};
var currentIndex=0;
var direction=0;
var pageCount=touchPageContent.size();
touchPageWrapper.height((pageCount+1)*touchPageContentHeight); var defaults = {
align:'center',
pager:'#pager',
showmousePoint:true
};
var options = $.extend(defaults, options); //初始化
(function init(){
if(options.align=='center')
{
marginleft=($(window).width()-element.width())/2;
element.css("left",marginleft);
$(options.pager).css("width",marginleft);
}
if(options.align=='right')element.css("right",0);
startLeft=0;
for(var i=0;i<pageCount;i++)
{
if(i==0)
$(options.pager+">div").before("<a href='#' class='current'> </a>");
else
$(options.pager+">div").before("<a href='#' class='point'> </a>");
}
})();
clearEvent = function(){
}
startDrag = function(event)
{
var offset = $(this).offset();
startTop = offset.top;
startY = event.pageY;
$(this)
.stop(true, false)
.mousemove(moveDrag)
.css('cursor','move');
;
draging=true;
}
/*
* div随鼠标移动,由startDrag开启,由enddrag结束
*/
var moveDrag = function(event){
var offset = $(this).offset();
var movepx=event.pageY-startY;
endTop= startTop+movepx;
direction=0;
if(movepx>0 && movepx>=(touchPageContentHeight/6))
direction=1;
else if (movepx<0 && Math.abs(movepx)>=(touchPageContentHeight/6))
direction=-1;
if(options.showmousePoint)$("#mousePoint").text("X="+point.X+" Y="+point.Y+ " offset.top="+movepx+" direction="+direction);
$(this).css("top", endTop-marginleft );
return true;
}
var endDrag = function(event){
if(draging){
$(touchPageWrapper)
.unbind("mousemove",moveDrag)
.css('cursor','auto');
if(direction==1)
currentIndex++
else if(direction==-1)
currentIndex--;
if(currentIndex==1 && (direction==1)) currentIndex=0;
if((Math.abs(currentIndex)+1)>=pageCount && (direction==-1)){currentIndex=(-pageCount+1);}
$(touchPageWrapper).animate({ top: currentIndex*touchPageContentHeight }, "slow");
var currentA=$(options.pager+" a");
$(currentA).attr("class","");
$(currentA).eq(Math.abs(currentIndex)).attr("class","current");
direction=0;
draging=false;
}
}
//初始化事件
return this.each(function(){
var obj = $(this);
obj.bind("mousemove",function(e){
point.X = e.pageX;
point.Y = e.pageY;
}).bind("mouseup",endDrag);
$(touchPageWrapper).bind("mousedown",startDrag)
.bind("click",clearEvent)
.bind("mouseup",endDrag).bind("mouseout",endDrag);
}); };
})(jQuery);这是用div为一页的翻页拖拉效果<div id="slidePageWrapper">
<div class="slidePageContent bgcolor1">
<img src="">
</div>
<div class="slidePageContent bgcolor2">
<img src="">
</div>
</div>我希望能实现一拉没有翻页跟手机看页面一样的效果,但是一直没找出好方法,因为是用的
html要导入的
跪求各位大师帮忙了!!!
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style>
html {
width:700px;
height:700px;
}
body {
background-repeat:no-repeat;
background-position:center;
margin:0px;
padding:0px;
}
#overflow {
width: 650px;
height: 650px;
overflow: hidden;
position: absolute;
left:-4px;
top:29px;
-webkit-transform: translateZ(0);
}
#overflow .content {
position: relative;
top: 0;
left: 0;
padding: 10px;
width: 650px;
}
</style>
<script src="jquery.min.js" type="text/javascript"></script>
<script src="hammer.js" type="text/javascript"></script>
<title>上下滑动</title>
</head>
<body oncontextmenu='return false' ondragstart='return false' onselectstart ='return false' onselect='document.selection.empty()' oncopy='document.selection.empty()' onbeforecopy='return false' onmouseup='document.selection.empty()'>
<div id="overflow" >
<div class="content">
<h1>HTML Ipsum Presents</h1>
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
<h2>Header Level 2</h2>
<ol>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ol>
<blockquote>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p>
</blockquote>
<h3>Header Level 3</h3>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ul>
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
<h2>Header Level 2</h2>
<ol>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ol>
<blockquote>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p>
</blockquote>
<h3>Header Level 3</h3>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ul>
<h2>Header Level 2</h2>
<ol>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ol>
<blockquote>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p>
</blockquote>
<h3>Header Level 3</h3>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ul>
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
<h2>Header Level 2</h2>
<ol>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ol>
<blockquote>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p>
</blockquote>
<h3>Header Level 3</h3>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ul>
</div>
</div>
<div id="debug" style="white-space:pre;"></div>
<script src="jquery.ui.touch.js" type="text/javascript"></script>
</body>
</html>
function debug(str) {
$("#debug").prepend(str+"\n");
}
/**
* super simple slideshow
* animation between slides happens with css transitions
动画幻灯片之间发生在css转换
*/
function TouchScroll(container, options)
{
container = $(container);
var content = $(">.content", container);
// var scrollbar = $(">.scrollbar div", container);
var self = this;
var hammer = new Hammer(container.get(0), {
drag: true,
drag_vertical: true,//垂直拖动
drag_horizontal: false,//水平拖动
drag_min_distance: 0,//最小距离在拖动事件开始
transform: false, //变换
tap: false,
tap_double: false,
hold: false
});
function getScrollPosition() {
return {
top: parseInt/*取整*/(content.css('top'), 10),
left: parseInt(content.css('left'), 10)
};
}
/**
* get the dimensions of a element 得到一个元素的尺寸
* @param jQuery el
* @return object { width: int, height: int }
*/
function getDimensions( el ) {
return {
width: el.outerWidth(),
height: el.outerHeight()
};
}
/**
* scroll to given x and y
* @param int x
* @param int y
*/
this.scrollTo = function(x, y)
{ };
var scroll_start = {};
var scroll_dim = {};
var content_dim = {}; hammer.ondragstart = function() {
scroll_start = getScrollPosition();
scroll_start.time = new Date().getTime(); scroll_dim = getDimensions( container );
content_dim = getDimensions( content ); // scrollbar.css({
// height: (100 / content_dim.height * scroll_dim.height) * (scroll_dim.height/100)
// }).stop().fadeTo(80, 1);
};
hammer.ondrag = function( ev ) {
if(ev.direction == 'up' || ev.direction == 'left') {
ev.distance = 0-ev.distance;
} var delta = 1; var top = scroll_start.top + ev.distance * delta;
content.css({ top: top }); // scrollbar.css({
// top: (100 / content_dim.height) * (0 - top) +"%"
// });
};
hammer.ondragend = function( ev ) {
var scroll = getScrollPosition();
var corrections = {};
if(scroll.top > 0) {
corrections.top = 0;
} else if(scroll.top < -(content_dim.height - scroll_dim.height) ) {
corrections.top = -(content_dim.height - scroll_dim.height);
} content.animate(corrections, 400);
// scrollbar.stop().animate({
// top: (100 / content_dim.height) * (0 - corrections.top) +"%"
// }, 400); // scrollbar.stop().fadeTo(80, 0); };
}
var scroll = new TouchScroll("#overflow");
scroll.scrollTo(0, 200);