(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要导入的
跪求各位大师帮忙了!!!

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <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);