原生JS实现拖拽效果


Posted in Javascript onDecember 04, 2020

本文实例为大家分享了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实现拖拽效果

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>

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

Javascript 相关文章推荐
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
Jan 06 Javascript
用js实现小球的自由移动代码
Apr 22 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
javascript在IE下trim函数无法使用的解决方法
Sep 12 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
js实现登录框鼠标拖拽效果
Mar 09 Javascript
JS实现小球的弹性碰撞效果
Nov 11 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
Jan 29 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 #Vue.js
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 #Vue.js
JS如何监听div的resize事件详解
Dec 03 #Javascript
JavaScript十大取整方法实例教程
Dec 03 #Javascript
js实现圆形菜单选择器
Dec 03 #Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 #Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 #Vue.js
You might like
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php时间戳转换的示例
2014/03/31 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
javascript new fun的执行过程
2010/08/05 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
高中军训感言800字
2014/03/05 职场文书
会计系毕业生求职信
2014/05/28 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
领导欢迎词范文
2015/01/26 职场文书
公司开除员工通知
2015/04/22 职场文书
2015年测量员工作总结
2015/05/23 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
结婚纪念日感言
2015/08/01 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python