一个对页面节点的拖踹用原生js该如何实现

一个对页面节点的拖踹用原生js该如何实现... 一个对页面节点的拖踹用原生js该如何实现 展开
 我来答
yinhui1129754
2017-05-12 · TA获得超过133个赞
知道小有建树答主
回答量:70
采纳率:100%
帮助的人:38.3万
展开全部

很简单 需要三个事件 onmousedown onmousemove onmouseup

并给需要拖动的节点增加一个属性叫droping(这个属性表示节点是不是正处于拖拽状态)下面给出一份演示

onmousedown 控制节点扩展的属性droping为true(表示可以移动节点了)

onmousemove 控制节点的位置(判断是否可以移动如果是就移动)

ommouseup控制节点的扩展属性为false(表示不能移动节点了)

<!DOCTYPE HTML>
<html>
<head>
<title>演示</title>

<style type="text/css">
</style>
</head>
<body>
<div id="dropDiv">
  我可以拖动
</div>
<script type="text/javascript">
function dropDivFun(Element){
//设置节点的定位为fixed
Element.style.position="fixed";
//获取事件对象函数 方便获取事件的clientX
function getEvent(){
if(event){
e=event;
}else if(window.event){
e=window.event;
}else{
e=arguments.callee.arguments[0];
}
return e;
}
//添加mousedown事件
Element.addEventListener("mousedown",function(){
var e=getEvent();
if(!Element.droping){
//设置droping为true并记录初始的位置
Element.droping=true;
Element.start_x=e.clientX-Element.offsetLeft;
Element.start_y=e.clientY-Element.offsetTop;
}
});
Element.addEventListener("mousemove",function(){
var e=getEvent();
//移动节点
if(Element.droping){
Element.style.left=e.clientX-Element.start_x+"px";
Element.style.top=e.clientY-Element.start_y+"px";
}
});
Element.addEventListener("mouseup",function(){
if(Element.droping){
//设置droping为false并释放初始的变量
Element.droping=false;
Element.start_x=null;
Element.start_y=null;
}
});
}
//为节点添加drop事件
dropDivFun(document.getElementById("dropDiv"));
</script>
</body>
</html>

该演示演示了使用原生js给节点拖动

卖梦_为生
2016-03-29 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:21万
展开全部
绑定点击事件,onmousedown/ontouchstart的时候记录鼠标点击的位置pageX、pageY,然后绑定移动事件onmousemove/ontouchmove,获得此时的pageX、pageY,然后与初始位置相减,得到差值a,b,更改元素的transformX(a),transformY(b),到此时就实现了移动,onmouseup/ontouchend之后获得最终的位置,再进一步操作就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友79e2664
2016-04-18 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:53.8万
展开全部
mousedown+mousemove 然后根据clientX和clientY判断鼠标位置以确定拖拽距离
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福流氓兔9
2016-10-31 · TA获得超过189个赞
知道小有建树答主
回答量:195
采纳率:66%
帮助的人:62.4万
展开全部
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
<title>event事件</title>
<style type="text/css">
        #box{width: 100px;height: 100px; background-color: red;position: absolute;}

</style>
</head>
<body>
     <div id="box"></div>
     <script type="text/javascript">
     
      var box=document.getElementById('box');
      var ww=document.documentElement.clientWidth;
        var ww1=document.documentElement.clientHeight;
        box.onmousedown=function (ev) {
         var ev=ev||window.event;
         var a=ev.clientX-box.offsetLeft;
         var b=ev.clientY-box.offsetTop;
        
            document.onmousemove=function (ev) {
          var ev=ev||window.event;
          var c=ev.clientX-a;
          var d=ev.clientY-b;
              
              if(c<=0){
                  c=0;
              }
              //if (a>=ww-box.clientWidth) {
              //    c=ww-box.clientWidth;
              // }
                 if (d<=0) {
                d=0;
              }
              // if (b>=ww1-box.clientHeight) {
              //    d=ww1-box.clientHeight;
              // }
         box.style.left=c+'px';
         box.style.top=d+'px';
        }
        }
        box.onmouseup=function () {
           document.onmousemove=null;
        }
              
     </script>
</body>
</html>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
破痴
2016-05-15 · TA获得超过281个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:112万
展开全部
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function allowDrop(ev)
{
ev.preventDefault();
}
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<div id="div1" style='width:336px;height:69px;border: 1px solid gray;' ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<div id="drag1" style='width:300px;height:50px;border: 1px solid gray;' draggable="true" ondragstart="drag(event)"> </div>
</body>
</html>

 参照http://www.w3school.com.cn/html5/html_5_draganddrop.asp

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式