jq div拖动(移动端和pc端)
来源:互联网 发布:nginx 根据请求ip转发 编辑:程序博客网 时间:2024/05/17 03:59
HTML:
<div style="width: 100px; height: 100px; background-color: darkgray; position:absolute;left: 0px; top: 0px;" id="barrage"></div>
js:
/*拖动事件*/ var cont=$("#barrage"); var contW=$("#barrage").width(); var contH=$("#barrage").height(); var startX,startY,sX,sY,moveX,moveY, disX, disY; var winW=$(window).width(); var winH=$(window).height(); cont.on({//绑定事件 touchstart:function(e){ startX = e.originalEvent.targetTouches[0].pageX; //获取点击点的X坐标 startY = e.originalEvent.targetTouches[0].pageY; //获取点击点的Y坐标 //console.log("startX="+startX+"************startY="+startY); sX=$(this).offset().left;//相对于当前窗口X轴的偏移量 sY=$(this).offset().top;//相对于当前窗口Y轴的偏移量 //console.log("sX="+sX+"***************sY="+sY); leftX=startX-sX;//鼠标所能移动的最左端是当前鼠标距div左边距的位置 rightX=winW-contW+leftX;//鼠标所能移动的最右端是当前窗口距离减去鼠标距div最右端位置 topY=startY-sY;//鼠标所能移动最上端是当前鼠标距div上边距的位置 bottomY=winH-contH+topY;//鼠标所能移动最下端是当前窗口距离减去鼠标距div最下端位置 }, touchmove:function(e){ e.preventDefault(); moveX=e.originalEvent.targetTouches[0].pageX;//移动过程中X轴的坐标 moveY=e.originalEvent.targetTouches[0].pageY;//移动过程中Y轴的坐标 //console.log("moveX="+moveX+"************moveY="+moveY); if(moveX<leftX){moveX=leftX;} if(moveX>rightX){moveX=rightX;} if(moveY<topY){moveY=topY;} if(moveY>bottomY){moveY=bottomY;} $(this).css({ "left":moveX+sX-startX, "top":moveY+sY-startY, }); }, mousedown: function(ev){ var patch = parseInt($(this).css("height"))/2; //console.log(patch); $(this).mousemove(function(ev){ var oEvent = ev || event; //console.log(oEvent.target); var oX = oEvent.clientX; var oY = oEvent.clientY; var t = oY - patch; var l = oX - patch; var w = $(window).width() - $(this).width(); var h = $(window).height() - $(this).height(); if(t<0){t = 0} if(l<0){l=0} if(t>h){t=h} if(l>w){l=w} $(this).css({top:t,left:l}) }); $(this).mouseup(function(){ $(this).unbind('mousemove'); }); } });
另附一种pc端原生js的写法:
window.onload = function () { var oDiv = document.getElementById('oDiv'); var disX = 0, disY = 0; oDiv.onmousedown = function (ev) { var oEvent = ev || event; disX = oEvent.clientX - oDiv.offsetLeft; disY = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function (ev) { var oEvent = ev || event; var l = oEvent.clientX - disX; var t = oEvent.clientY - disY; console.log(l); if(l <= 0){ l = 0} if(t < 0){t = 0} if(l > document.documentElement.clientWidth - oDiv.offsetWidth){ l = document.documentElement.clientWidth - oDiv.offsetWidth; } if(t > document.documentElement.clientHeight - oDiv.offsetHeight){ t = document.documentElement.clientHeight - oDiv.offsetHeight; } oDiv.style.left = l + 'px'; oDiv.style.top = t + 'px'; } document.onmouseup = function (ev) { document.onmousemove = null; document.onmouseup = null; } } }
阅读全文
3 0
- jq div拖动(移动端和pc端)
- js实现一个可以兼容PC端和移动端的div拖动效果
- 用jq让移动端和PC端遮罩层弹出后页面禁止滚动
- 鼠标拖动div(pc/移动)/touch事件/mouse事件
- HTML5 移动端div块跟随手指拖动
- 鼠标拖动div移动
- 基于jq的图片轮播插件,滑动切图,兼容移动,PC端
- unity中播放视频(PC端和移动端)
- javaweb区分PC端和移动端
- 移动端和pc端互访
- js判断PC端和移动端
- JS判断移动端和PC端
- Xmpp+openfire+smack音视频(PC和移动端)
- PC端和移动端刮卡效果
- PC端和移动端相应Enter
- 浅谈PC和移动端的自适应
- pc和移动端默认样式重置
- 移动端拖动惯性
- 优化算法——截断梯度法(TG)
- 54 OrangePi linux内核里的i2c控制器驱动
- mysql查询当天整点时间,昨天整点时间
- Firebreath基础教程之四:基本编程
- redis有序集合操作 增删查
- jq div拖动(移动端和pc端)
- 6.29 CodeForce 818 A/B解题报告
- 优化算法——坐标上升法
- 揭秘悠百佳休闲食品加盟大型骗局
- linux下svnserve安装和简单配置
- android TabLayout+ViewPager有较多Tab,Tab随viewPager滚动
- 基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制
- 分享一款日记软件
- centos7 yum安装最新版本的nginx