美文网首页
仿苹果返回首页按钮(移动端div拖动 返回首页)

仿苹果返回首页按钮(移动端div拖动 返回首页)

作者: 菜猴子 | 来源:发表于2017-01-28 01:28 被阅读38次

    参考了网上的文章,然后又完善了一下

    大概思路:

    1、实现页面的拖动效果:首先是明白移动端的touchstart touchmove touchend的用法

    2、div移动其实就是它的left 和 top 的移动

    3、touchstart 的时候,记录鼠标的坐标和div的偏移量,由此可以计算出鼠标和div左侧和顶部的距离

    4、touchmove 的时候,记录新的鼠标坐标,用新的坐标-起点鼠标和偏移量的差值=div需要移动的距离

    5、边界值限制,防止div 移出来

    6、禁止底层滑动

    7、跳转到首页或者百度


    我的w3cfuns 同篇文章http://www.qdfuns.com/notes/19055/1b91973818e1014978641524cbe3f215.html

    dragFn('div1','http://www.baidu.com');

    function dragFn(id,path){

    var dom = document.getElementById(id);

    var flag = false;

    var cur = {

    x:0,

    y:0

    }

    var skip = 0;

    var nx,ny,dx,dy,x,y;

    function down(){

    flag = true;

    var touch;

    if(event.touches){

    touch = event.touches[0];

    }else{

    touch = event;

    }

    cur.x = touch.clientX; // 获取当点鼠标的坐标

    cur.y = touch.clientY;

    dx = dom.offsetLeft; // 当前元素距离外层元素的位置

    dy = dom.offsetTop;

    }

    function move(){

    event.preventDefault();//阻止触摸时浏览器的缩放、滚动条滚动等

    if(flag){

    skip = 1;

    var touch;

    if(event.touches){

    touch = event.touches[0];

    }else{

    touch = event;

    }

    nx = touch.clientX - cur.x; // 两个鼠标点的距离

    ny = touch.clientY - cur.y;

    x = dx + nx;

    y = dy + ny;

    if(x < 0){

    x = 0

    }else if(x > document.documentElement.clientWidth - dom.offsetWidth){

    x = document.documentElement.clientWidth - dom.offsetWidth

    }

    if(y < 0){

    y = 0

    }else if(y > document.documentElement.clientHeight - dom.offsetHeight){

    y = document.documentElement.clientHeight - dom.offsetHeight

    }

    dom.style.left = x +'px';

    dom.style.top = y +'px';

    return;

    }

    }

    // 鼠标释放时候的函数

    function end(){

    flag = false;

    move();

    if(skip == 0){ // 判断是否出发了touchmove

    location.href = path;

    }

    }

    dom.addEventListener('touchstart',function(){

    skip = 0;

    down();

    },false)

    dom.addEventListener('touchmove',function(){

    move();

    },false)

    dom.addEventListener('touchend',function(){

    end();

    },false)

    }

    相关文章

      网友评论

          本文标题:仿苹果返回首页按钮(移动端div拖动 返回首页)

          本文链接:https://www.haomeiwen.com/subject/sicqittx.html