zoukankan      html  css  js  c++  java
  • Javascript:简单拖拽效果的实现

      

    核心代码:

    /*
    *完成一个拖拽事件由三大事件组成:
    *1:onmousedown:选择元素
    *2:onmousemove:移动元素
    *3:onmouseup:释放元素
     */
    function drag(obj){
    
    obj.onmousedown=function(ev){
    	var ev=ev || event;
    	var disX=ev.clientX-this.offsetLeft;
    	var disY=ev.clientY-this.offsetTop;
    	//IE下选中文字后移动时,文字跟着移动的BUG
    	if(obj.setCapture){
           obj.setCapture();
    	}
    	document.onmousemove=function(ev){
          
          //此时采用document,而不采用obj,是因为采用obj时,鼠标移动太快,obj会跟不上鼠标的速度,而采用document,只要鼠标不脱离文档流,obj都可以灵活移动
          var L=ev.clientX-disX;
          var T=ev.clientY-disY;
          var maxL=document.documentElement.clientWidth-obj.offsetWidth;
          if(L<200){
          	//设置移动边界值
          	//直接改变L值,比如200,可以实现磁性吸附效果
          	L=0;
          } else if(L>maxL){
            L=maxL;
          }
          obj.style.left=L+'px';
          obj.style.top=T+'px';
    	}
    	return false;	
    }
    
    obj.onmouseup=function(){
    	document.onmousemove=document.onmouseup=null;	
        if(obj.releaseCapture){
           obj.releaseCapture();
    	}
    	return false;
    }
    
    }
    

    DEMO:

    在线演示:http://codepen.io/anon/pen/OVBEpM

    <div id="words">这是文字这是文字这是文字这是文字这是文字</div>
     <div id="div1"></div>
    
    <script>
    var oDiv=document.getElementById('div1');
    var oWords=document.getElementById('words');
    
    drag(oDiv);
    drag(oWords);
    </script>
    

      

     

  • 相关阅读:
    Android 画直线并实现拖动
    SpringBoot整合MyBatis
    SpringBoot集成JPA
    SpringBoot整合使用JdbcTemplate
    Hadoop下WordCount程序
    Linux中Hadoop的环境搭建
    大数据初始化环境
    Hibernate根据实体类自动创建表
    自定义MVC实现登录案例
    SSH(Spring Struts2 Hibernate)框架整合(注解版)
  • 原文地址:https://www.cnblogs.com/kevinCoder/p/4677933.html
Copyright © 2011-2022 走看看