原生JS实现拖拽效果

 更新时间:2020年12月04日 08:45:36   作者:向天再借五百根  
这篇文章主要为大家详细介绍了原生JS实现拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JS实现拖拽效果的具体代码,供大家参考,具体内容如下

想要让整个元素移动需要三个事件:

鼠标按下 onmousedown
鼠标移动 onmousemove
鼠标抬起 onmouseup

html

<div id="login" class="login">
 <!-- 点击title拖拽 -->
  <div id="title" class="login-title">登录会员
 <!-- title end -->
   <span><a id="closeBtn" href="javascript:void(0);" class="close-login">关闭</a></span>
  </div>
  <div class="login-input-content">
   <div class="login-input">
    <label>用户名:</label>
    <input type="text" placeholder="请输入用户名" name="info[username]" id="username" class="list-input">
   </div>
   <div class="login-input">
    <label>登录密码:</label>
    <input type="password" placeholder="请输入登录密码" name="info[password]" id="password" class="list-input">
   </div>
  </div>
  <div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登录会员</a></div>
</div>

JS

var login = document.querySelector('.login');//获取整个弹框的内容
var title = document.querySelector('#title');
 title.addEventListener('mousedown',function(e){
  //当按下鼠标的时候,获取到鼠标在拖拽盒子内的坐标
  //鼠标在页面的坐标 - 大盒子距离浏览器左侧的距离
  var x = e.pageX - login.offsetLeft;
  var y = e.pageY - login.offsetTop;

  //鼠标移动
  document.addEventListener('mousemove',move);

  function move(e){
  //拖拽的盒子定位=鼠标在页面的坐标 - 鼠标在拖拽盒子的坐标
   login.style.left = e.pageX - x + 'px';
   login.style.top = e.pageY - y + 'px';
  }

  //当鼠标抬起的时候,将移动事件删除
  document.addEventListener('mouseup',function(){
   document.removeEventListener('mousemove',move);
  })

 })

CSS部分

<style>
 *{
   padding: 0px;
   margin: 0px;
  }
  .login {
   display: block;
   width: 512px;
   height: 280px;
   position: fixed;
   border: #ebebeb solid 1px;
   left: 50%;
   top: 50%;
   background: #ffffff;
   box-shadow: 0px 0px 20px #ddd;
   z-index: 9999;
   transform: translate(-50%, -50%);
  }
  .login-title {
   width: 100%;
   margin: 10px 0px 0px 0px;
   text-align: center;
   line-height: 40px;
   height: 40px;
   font-size: 18px;
   position: relative;
   cursor: move;
  }
  .login-input-content {
   margin-top: 20px;
  }
  .login-button {
   width: 50%;
   margin: 30px auto 0px auto;
   line-height: 40px;
   font-size: 14px;
   border: #ebebeb 1px solid;
   text-align: center;
  }
  .login-bg {
   display: none;
   width: 100%;
   height: 100%;
   position: fixed;
   top: 0px;
   left: 0px;
   background: rgba(0, 0, 0, .3);
  }
  a {
   text-decoration: none;
   color: #000000;
  }
  .login-button a {
   display: block;
  }
  .login-input input.list-input {
   float: left;
   line-height: 35px;
   height: 35px;
   width: 350px;
   border: #ebebeb 1px solid;
   text-indent: 5px;
  }
  .login-input {
   overflow: hidden;
   margin: 0px 0px 20px 0px;
  }
  .login-input label {
   float: left;
   width: 90px;
   padding-right: 10px;
   text-align: right;
   line-height: 35px;
   height: 35px;
   font-size: 14px;
  }
  .login-title span {
   position: absolute;
   font-size: 12px;
   right: -20px;
   top: -30px;
   background: #ffffff;
   border: #ebebeb solid 1px;
   width: 40px;
   height: 40px;
   border-radius: 20px;
  }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS如何把字符串转换成json

    JS如何把字符串转换成json

    这篇文章主要介绍了JS如何把字符串转换成json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 浅析JavaScript预编译和暗示全局变量

    浅析JavaScript预编译和暗示全局变量

    这篇文章主要介绍了JavaScript预编译和暗示全局变量的相关资料,帮助大家更好的理解和学习JavaScript,感兴趣的朋友可以了解下
    2020-09-09
  • 使用Three.js 实现虎年春节3D创意页面

    使用Three.js 实现虎年春节3D创意页面

    虎年春节将至,本文使用 React + Three.js技术栈,实现趣味 3D创意页面,主要包括:ShadowMaterial、 MeshPhongMaterial等基本材质的使用、使用 LoadingManager展示模型加载进度、OrbitControls`的缓动动画、TWEEN简单补间动画效果等,感兴趣的朋友一起看看吧
    2022-01-01
  • js浮点数保留两位小数点示例代码(四舍五入)

    js浮点数保留两位小数点示例代码(四舍五入)

    本篇文章主要介绍了js浮点数保留两位小数点示例代码(四舍五入) 需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • JS在onclientclick里如何控制onclick的执行

    JS在onclientclick里如何控制onclick的执行

    这篇文章主要介绍了JS在onclientclick里如何控制onclick的执行的相关资料,需要的朋友可以参考下
    2016-05-05
  • 快速解决bootstrap下拉菜单无法隐藏的问题

    快速解决bootstrap下拉菜单无法隐藏的问题

    今天小编就为大家分享一篇快速解决bootstrap下拉菜单无法隐藏的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 通过扫小程序码实现网站登陆功能

    通过扫小程序码实现网站登陆功能

    这篇文章主要介绍了通过扫小程序码实现网站登陆功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • JS链式调用的实现方法

    JS链式调用的实现方法

    程序开发人员可以使用一些简单的技术来改进自己的代码编写工作。你可以写一些函数来处理各种常见任务,以节省时间;也可以改进一下代码的实现方式,比如你可以把方法的链式调用技术用到自己所写的JS库中,把自己喜欢的方法串起来调用。
    2013-03-03
  • js实现将选中值累加到文本框的方法

    js实现将选中值累加到文本框的方法

    这篇文章主要介绍了js实现将选中值累加到文本框的方法,涉及javascript动态操作页面元素结点的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-08-08
  • 用Javascript 和 CSS 实现脚注(Footnote)效果

    用Javascript 和 CSS 实现脚注(Footnote)效果

    脚注(Footnote)是向用户提供更多信息的一个最佳途径,也是主体信息的一个有效补充,常见于各种印刷书籍中。
    2009-09-09

最新评论