原生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 相关文章推荐
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 Javascript
深入理解Javascript里的依赖注入
Mar 19 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
JS点击缩略图整屏居中放大图片效果
Jul 04 Javascript
webpack 样式加载的实现原理
Jun 12 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
es6函数之箭头函数用法实例详解
Apr 25 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 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
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
div层的移动及性能优化
2010/11/16 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
jQuery实现简单下拉导航效果
2015/09/07 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
python获取外网ip地址的方法总结
2015/07/02 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
十八届三中全会学习方案
2014/02/16 职场文书
高中生职业规划范文
2014/03/09 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
办理房产过户的委托书
2014/09/14 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle