原生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 相关文章推荐
jquery 元素相对定位代码
Oct 15 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
jquery隔行换色效果实现方法
Jan 15 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
JS中静态页面实现微信分享功能
Feb 06 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
Angular封装表单控件及思想总结
Dec 11 Javascript
vue的hash值原理也是table切换实例代码
Dec 14 Vue.js
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
帅气的琦玉老师
2020/03/02 日漫
用PHP实现多级树型菜单
2006/10/09 PHP
php 禁止页面缓存输出
2009/01/07 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
javascript常见操作汇总
2014/09/03 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
vue axios 二次封装的示例代码
2017/12/08 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
layui导出所有数据的例子
2019/09/10 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
python 判断一个进程是否存在
2009/04/09 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
汽车技术服务英文求职信范文
2014/01/02 职场文书
学校党员对照检查材料
2014/08/28 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
政协常委会议主持词
2015/07/03 职场文书
化工生产实习心得体会
2016/01/22 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL