悬浮球——手机端元素可以随意拖拽
七娃博客1,654人阅读
手机端很多地方都会使用元素允许拖拽到指定位置或者随意位置,例如:悬浮球效果,那么怎么实现呢?
html部分:
<div id="ball"> </div>
js部分:
var idom = document.getElementById("ball"); var contW = $(idom).width(); var contH = $(idom).height(); var startX, startY, sX, sY, moveX, moveY; var winW = $(window).width(); var winH = $(window).height(); $(idom).on({ //绑定事件 touchstart: function(e) { startX = e.originalEvent.targetTouches[0].pageX; //获取点击点的X坐标 startY = e.originalEvent.targetTouches[0].pageY; //获取点击点的Y坐标 sX = $(this).offset().left; //相对于当前窗口X轴的偏移量 sY = $(this).offset().top; //相对于当前窗口Y轴的偏移量 leftX = startX - sX; //鼠标所能移动的最左端是当前鼠标距div左边距的位置 rightX = winW - contW + leftX; //鼠标所能移动的最右端是当前窗口距离减去鼠标距div最右端位置 topY = startY - sY; //鼠标所能移动最上端是当前鼠标距div上边距的位置 bottomY = winH - contH + topY; //鼠标所能移动最下端是当前窗口距离减去鼠标距div最下端位置 }, touchmove: function(e) { e.preventDefault(); //移动过程中XY轴的坐标要减去margin的距离 moveX = e.originalEvent.targetTouches[0].pageX; //移动过程中X轴的坐标 moveY = e.originalEvent.targetTouches[0].pageY; //移动过程中Y轴的坐标 //判断的时候要计算加上padding的距离 if(moveX < leftX) { moveX = leftX; } if(moveX > rightX) { moveX = rightX; } if(moveY < topY) { moveY = topY+150;//顶部可留空间 } if(moveY > bottomY) { moveY = bottomY-80;//底部可留空间 } if(startY<winH){ $(this).css({ "top": moveY + sY - startY, }) } // $(this).css({ //"left": moveX + sX - startX,//去掉之后仅沿y轴移动 //"top": moveY + sY - startY, // }) },
评论 | 0 条评论
登录之后才可留言,前往登录